The disadvantage of C++ templates is the structural type is implicit - you only know if the input object satisfies the type if you read the documentation, code, or can decipher the error message that occurs if it didn't.
Concepts would have fixed this, but we don't have concepts and maybe never will!
F# also supports it, given its ML linage.
C# tricks with dynamic, although in this case it is dynamic typing, so not really the same thing.
reply