是否可以使用像'template <class t =“”> X(){}'这样的模板化构造函数?</class>

时间:2011-06-03 17:19:15

标签: c++ templates constructor

struct X{
    template<class T>
    X(){}
};

是否可以实例化这样的类型?

1 个答案:

答案 0 :(得分:12)

是的,有可能有这样的构造函数,但是不可能调用它。模板化构造函数的所有模板参数必须从参数列表中推导出来或具有默认值。在您的示例中,您无法实例化该类。

[temp.mem]

  

[注意:因为显式模板参数列表遵循函数模板名称,   并且因为调用了转换成员函数模板和构造函数成员函数模板   如果不使用函数名,则无法为这些名称提供显式模板参数列表   功能模板。 - 后注]