如果我想编写一个通用的复制构造函数(一个可以接受任何参数类型的构造函数),这很容易做到:
class Widget {
public:
template<typename T> Widget(T&& other);
};
这不会阻止编译器生成传统的复制构造函数,所以我想自己编写并委托给模板。但是我该怎么做呢?
class Widget {
public:
template<typename T> Widget(T&& other);
Widget(const Widget& other): ??? {} // how delegate to the template?
};
我试图用这种方式编写委托构造函数,
Widget(const Widget& other): Widget<const Widget&>(other){}
但是 VC11、gcc 4.8 和 clang 3.2 都拒绝它。
如何编写我正在尝试编写的委托复制构造函数?