有效的模板参数

时间:2012-02-14 05:07:08

标签: c++

  

模板参数可以是常量表达式(§C.5),具有外部链接的对象或函数的地址(第9.2节),或者是指向成员的非重载指针(第15.5节)。用作模板参数的指针必须采用&ooff形式,其中ooff是对象或函数的名称,或ff形式,ff是函数的名称。指向成员的指针必须是&XX::ooff形式,其中ooff是成员的名称。特别是,字符串文字不能作为模板参数。

这是来自stroustrup的书。什么是允许的,什么不是什么背后的逻辑是什么?为什么不接受字符串文字?

我的理解是编译器应该能够推导出参数的类型,以便它可以在内部为该给定类型生成代码。谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

编译器不会推断出非类型模板参数的类型。它们由程序员指定。没有什么可以推断的。

这些要求已经到位,以确保编译器在编译时可以确定两个指针是否相等。反过来,这需要确定类模板(函数模板)的两次使用是否引用相同的类型(函数)。