3 ms·
On the other hand, C++ templates sometimes make it hard to understand which function ends up getting called, what size a particular type actually has or what is
by fauigerzigerk 13y ago
On the other hand, C++ templates sometimes make it hard to understand which function ends up getting called, what size a particular type actually has or what is an alias for what.
There are too many indirections to follow manually. All I know is that the compiler will select some function that has conforming types. The compiler is very very smart. It knows all the incredibly complicated name resolution rules and it will use each one of them.
Unfortuntately I'm not as smart. Even after more than 20 years of using C++ I sometimes fail to anticipate which function the compiler decides to use. And that is not safe.
In fact it is less safe than casting interface{}, because that will at least fail fast at runtime instead of silently doing something unexpected.
- scott_s 13y agoIt is possible to have generics without having the specialization rules of C++.
- pcwalton 13y agoYou're criticizing ADL, not generics.
- fauigerzigerk 13y agoIt's true that I'm not criticising generics in general, but ADL is only part of what makes C++ templates so treacherous. I think Go needs some form of generics. Every statically typed language does. But after C++ I do understand the hesitation on the part of Go's creators.