It is possible to have generics without having the specialization rules of C++.
You're criticizing ADL, not generics.
Re:Go by Example
by fauigerzigerk on Saturday January 18, 2014 @03:14AM
(#7080511)
It'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.
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.