C++,使用模板编程的术语/习语

ura*_*ray 7 c++ templates idioms term

我一直在读这个词:

  1. 模板编程
  2. 通用编程
  3. 元编程
  4. 也许是另一个成语/术语..

对于任何使用模板的c ++代码,哪一个是正确的或更准确的术语?

Mat*_*lia 15

据我所知:

  1. 模板编程只是指经典的"使用模板编程",即"我有一个我希望可以用于任何类型的函数/类,我只是将它作为模板".

    它也可以被视为"包罗万象"的类别,包括任何采用模板的编程技术.

  2. 通用编程可以综合描述为STL使用的编程范例.

    维基百科将其定义为

    一种计算机编程风格,其中算法是根据待指定的后续类型编写的,然后在需要时将特定类型作为参数进行实例化

    恕我直言,最好说所有容器都设计用于任何类型(不牺牲类型安全性),并且算法设计得足够通用,可以处理任何容器类型(只要明智地使用它们是明智的,即,对无序容器进行排序是没有意义的.

    请注意,泛型编程(使用此定义)并不严格要求使用模板,事实上它可以通过继承和动态多态实现(感谢Ben Voigt).

    一般来说,我会说模板编程泛型编程部分重叠,许多人可以互换地使用泛型编程模板编程这两个术语.

  3. 模板元编程是一种编程风格,其中模板用于执行编译时计算/决策/检查,通常在没有模板(静态断言,编译时常量计算,......)的情况下是不可行的.

    这样的代码通常是非常人为的,因为C++不是为这种编程风格设计的(实际上后来被"发现"),并且对于C++程序员来说可能看起来也不熟悉,因为它经常接近函数式编程(没有很好的语法设施)因为它而不是遵循C++中通常使用的命令式范例.