所以我想知道其他C++程序员的情况如何?元模板编程是否应该成为C++程序员“必备”知识(当然不包括入门级学生),还是不需要?
编辑:请注意,我的问题与生产代码有关,而不是小样本或原型。
是的,但我个人不会将其放在高优先级位置。这是一个漂亮的功能,但它有点情境化,良好的C++代码可以在没有它的情况下开发。我个人使用过一两次,但并没有真正发现它对于我的工作有足够的价值以便经常使用它。(也许这是由于我缺乏C++生产经验所致)
我在生产代码中曾经唯一使用过模板元编程的方法就是将一个关键循环展开,该循环读取了硬件寄存器N次,然后再读取M次,其中N和M是不同的硬件,并已在编译时确定。总体而言,这种技术似乎并不适合我们的代码库,我永远无法通过代码审查。
18个月后,这个话题仍然非常相关。我仍然认为模板元编程不是必要的知识,但你需要至少能够阅读和解释基础知识,例如条件语句和奇妙重复的模板模式(循环)。除此之外,只要有几个人能够为其编写良好的接口,那么基本到中级的模板知识就足够了,当然,你的实际情况可能会有所不同。
我不认为模板编程是必需的,但了解它肯定是有好处的。你应该对这个主题有足够的了解,以便能够有效地使用诸如STL或Boost之类的模板库。
当我面试某人时,我总会问一些关于模板元编程的问题。如果候选人不知道这个主题,我不会因此而对他们产生不利影响。但如果他们知道,那么这将是一个很大的优势。
了解如何使用C++模板不是绝对必要的。您可以在大多数情况下不使用它们完成大部分操作。但是,它们确实是一个非常棒的特性。
由于您自己创建模板,任何新手都需要像其他代码一样迅速掌握它们,这将成为学习的重中之重。
我鼓励人们学习使用STL的某些功能。我在生产代码中使用过这个库,它确实节省了时间并简化了很多事情。当需要时,我也会自己创建模板。
我也听说过boost库有很多好处。
如果我需要编写可移植的代码,通常会避免使用模板,因为许多编译器仍然无法正确地支持它们。如果需要可移植的STL,则STLPort是最可移植的。