And your error messages. ;)
Maybe someday we'll have a language that is efficient and also allows creating efficient and usable DSLs. C++ ain't it.
Edit: perhaps D would actually be that language?
C++ constraints change the game here. Esoteric template errors will be a thing of the past
Concepts were supposed to help, but based on what I've heard, they sometimes make the error messages even worse, so I'm not sure.
The discussion about C++ lookup rules actually really reminded me of Julia, where functions are quite often overloaded and it is not always trivial to figure out which one should be called. For lack of a better source, there is something about that in this talk: https://youtu.be/TPuJsgyu87U?t=989