ユニバーサル コピー コンストラクター (任意の引数型を受け取るコンストラクター) を作成する場合は、次のように簡単に作成できます。
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 はすべて拒否します。
作成しようとしている委任コピー コンストラクターを作成するにはどうすればよいですか?