True, but both come under the heading of adding a level of indirection at compile time. It's a tough language decision on how far to go in that direction. Go, pre-template, was minimalist on this. C++ probably went too far. Where to stop is a good question.