尽管构造函数能够成为模板函数,但 C 03 标准并未提供显式指定其模板参数的语法。相反,编译器会根据提供的参数自动确定这些参数。
请考虑以下示例:
struct A { template<typename T> A() {} };
要实例化此类,您不能显式指定模板参数。相反,您必须依赖编译器从传递给构造函数的参数中推断它:
A<int> a; // Constructs an A object with template value int
C 03 标准明确指出:
[注意:因为显式模板参数列表遵循函数模板名称,并且由于调用转换成员函数模板和构造函数成员函数模板时不使用函数名称,因此无法为这些函数模板提供显式模板参数列表。] (§14.5.2/5)
如果编译器无法确定正确的模板参数,此限制可能会阻碍调试工作。显式参数规范可以增强错误消息并有可能解决问题。然而,C 03 标准不支持它。
以上是C 03 可以在构造函数中显式指定模板参数吗?的详细内容。更多信息请关注PHP中文网其他相关文章!