【发布时间】:2019-04-19 15:45:48
【问题描述】:
我正在重载具有不同输入类型的模板类A 的构造函数,用于标量和容器类型参数:
template<typename T>
class A {
public:
A();
A(T&& _val) { printf("non-template constructor\n");} ;
template<typename iT> A(const iT& _cont) { printf("template constructor\n");};
};
int main(int argc, char const *argv[]) {
A<float> foo1(0.9); //template constructor
A<float> foo2((float)0.9); //no-template constructor
A<float> foo3(std::vector<int>(5,8)); //template constructor
return 0;
}
但是,有没有办法在隐式可转换类型上调用强制非模板构造函数,例如将double 传递给构造函数A<float>()?
【问题讨论】:
标签: c++ class templates constructor