А еще лучше посмотреть в Qt, а потом посмотреть в Haskel или Common Lisp

A вообще, это вечная тема для обсуждений, т.как в СРР темплейты не ахти - не хочется плодить кучи классов, а с другой стороны, если хочется с параметрами, то где-то птийдется терять типизацию, а если не терять типизацию, то тогда терять производительность, а если не терять, то это только либо в чисто функциональных языках, либо в мультипарадигменных, которые позволяют функциональный подход

ЗЫ C# - мультипарадигменный, как и CL.