尽管能够在类中创建构造函数模板,但编译过程通常会从参数中推断出模板参数假如。然而,如果存在允许在此类构造函数中显式指定模板参数的语法,则会出现疑问。
以以下结构为例:
struct A { template<typename T> A() {} };
问题出现:是否有一种方法实例化此结构或显式定义其构造函数的模板参数?
在实践中,可能会出现编译器无法识别正确的模板化构造函数的情况,从而导致潜在的困难。显式模板参数规范可以增强错误报告甚至解决问题。
答案:
令人失望的是,C 03 标准提供了明确的答案:
"因为转换成员函数模板和构造函数成员函数模板是在不使用函数名的情况下调用的,所以无法提供显式的模板参数列表对于这些功能模板。” (§14.5.2/5)
本质上,C 03 标准不支持在构造函数定义中显式指定模板参数。
以上是可以在构造函数定义中显式指定模板参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!