In my experience Meta-templates are really fun (when your compilers are compliant), and can give good performance boosts, and luckily I’m surrounded by seasoned C++ programmers that also grok meta-templates, however occasionally a new developer arrives and can’t make heads or tails of some of the meta-template tricks we use (mostly Andrei Alenxandrescu stuff), for a few weeks until he gets initiated appropriately.
So I was wondering what’s the situation for other C++ programmers out there? Should meta-template programming be something C++ programmers should be ‘required’ to know (excluding entry level students of course), or not?
Edit: Note my question is related to production code and not little samples or prototypes
If you can you find enough candidates who really know template meta-programing then by all means, require it. You will be showing a lot of qualified and potentially productive people the door (there are plenty of legitimate reasons not to know how to do this, namely that if you do it on a lot of platforms, you will create code that can’t compile, or that average developers will have trouble understanding). Template meta-programming is great, but let’s face it, it’s pushing C++ to the limit. Now, a candidate should probably understand basics (compute n! at compile time, or at least explain how it works if they are shown the code). If your new developers are reliably becoming productive within a few weeks, then your current recruiting is probably pretty good.