Java泛型与C++模板

w4j*_*j3d 1 c++ java generics templates

我想我可以用一个词来概括Java中泛型的使用:类型安全.你能用一个词来总结在C++中使用模板吗?

Cha*_*via 5

一句话:元编程.

但实际上,你要问的是非常困难的.模板是一个复杂的主题.从本质上讲,模板是元编程的工具:也就是说,它们是生成更多代码的代码.

在现实世界中,模板被用来最经常从相同类/函数模板产生多个类或函数,其中的每一个使用具有不同类型的参数.换句话说,通用编程.这可能是STL中容器类最好的展示.

但是因为模板最终是一个元编程工具,所以它们不仅仅允许您实现泛型类/函数.专业化,部分专业化和SFINAE允许一系列代码生成功能,远远超出实现通用类或功能.实际上,递归模板实例化允许您使用嵌入在C++中的图灵完备元语言进行编程.