如果我有这样的课
template <typename T>
class MyClass
{
T myData;
public:
T getValue() { return myData; }
template <typename V>
MyClass(const MyClass<V>& other) :
myData((T) other.getValue())
{
}
};这意味着我提供了一个副本构造函数(用于V=T),因此根据这个链接Why no default move-assignment/move-constructor?,我不会得到默认的移动构造函数等等。
是否有一种方法使模板化构造函数仅作为转换构造函数工作,因此对于V!=T?
发布于 2016-08-18 11:24:10
你的前提是错误的。构造函数模板从未用于实例化副本(或移动)构造函数。换句话说,复制/移动构造函数总是非模板成员函数,即使成员函数模板可以生成具有适当复制/移动签名的构造函数。
因此,除了模板之外,您的类还将有一个普通的复制构造函数。
https://stackoverflow.com/questions/39016896
复制相似问题