可以明确指定构造函数的模板参数吗?
收藏

类的构造函数可以是模板函数。在调用此类构造函数时,编译器通常会查看赋予该构造函数的参数,并从中确定所使用的模板参数。是否还有一些语法可以明确指定模板参数?

一个人为的例子:

struct A {
   template<typename T>
   A() {}
};

有没有办法实例化此类?显式指定构造函数的模板参数的语法是什么?

我的用例将是一个问题,因为编译器似乎找不到正确的模板化构造函数。明确指定模板参数可能会生成更多有用的错误消息,甚至可以解决问题。

最佳答案

否。C++ 03标准说:

[注意:因为显式模板参数列表在函数模板名称之后,并且   因为在不使用函数名称的情况下调用了转换成员函数模板和构造函数成员函数模板,所以无法为这些函数模板提供显式的模板参数列表。](第14.5.2 / 5节)

    公众号
    关注公众号订阅更多技术干货!