"least understood"? How difficult should "genericity" be? (Apparently
I just indicted it. Oh well).
Maybe we should differentiate between different techniques that are
used with template programming: Surely everyone will agree that the
container classes of the STL are plain and simple. It gets a bit more
complicated when you consider traits. Probably the most complicated
thing is the heavy use of SFINAE (like it is done in boost), the CRTP,
or Koenige-Lookup (which is not strictly a template-related problem
but plays a role in template programming). Maybe we should consider
policies like
"Template programming is okay, but no use of SFINAE, CRTP, and other
techniques that are beyond the common skills of our team".
Are you confusing the concept with the C++ implementation? Cuz even
without the idiosynchracies of the C++ implementation of genericity, I
(let it be now "divulged") think that judicious use (read, requires
explicit coding standard) is appropriate.
I'm sorry if I couldn't made myself clear (English is not my first
language). I wanted to say that I think that your idea of having a
policy that requires "judicious" use of templates is a good thing.
However, such a policy cannot be made for the whole programming
language but rather for each single project.
Did you tell him "C++" and not say more correctly "Template C++" so he
left for not wanting to be part of that DIALECT of C++?
Well, I actually didn't ask him before it was too late. But that's not
too bad, as I can "fill in" the template-related stuff and let him
write non-template related C++ code. Besides, he is more or less only
a hobby programmer and spends more time with hardware related
problems.
Ha! But you "get it" now, don't you? It is unnecessary and
undesireable to learn "languages within languages" ad infinitum. It's
not a non-understanding of the idiosynchratic/complex/etc "feature",
but rather a practical decision to not "bite" on it.
Absolutely. One should always keep it as simple as possible (although
I can understand that programmers who have a certain palette of
techniques tend to use this palette on projects that could have been
solved with "less complicated" tools).
Regards,
Stuart