
"Terry G"
What, specifically, do you find painful?
[...] i.e. painful because it makes me realize how stupid I still am, in spite of all my past successes. Printf and void* have served me well.
Well, look at this from a different angle: just how much smarter you can become if you actually master all this stuff ;-)
From my own experience: about seven years ago I almost switched to Java. I read a Java book, cover-to-cover, and I came to realize one painful thing:
Programming is boring :-( Thankfully my next book happened to be MC++D. As for usefullnes of TMP, almost all of it is in the domain of library development. I can't find any example where TMP would be useful outside this domain. If you ask what can be done with TMP that can't be done without it, the only answer I can think of would be: "I can develop a library with such and such interface". This interface will be more convenient, more intuitive, more type-safe, etc. OTOH, can you continue programming with printf and void*, getting all your errors at runtime? Of course you can. But why? Regards, Arkadiy