私はinheriting constructors質問を読んで、広くはC++コンストラクタの継承を理解しています。私はXを形成し、Bを構築するために(2)を使用することができるがAからBを構築する(1)を使用することができないようC++の基本クラスからコンストラクタとしてコピー/移動コンストラクタを継承
class X;
class A {
A(const A& a); // (1)
A(const X& x); // (2)
};
class B : A {
using A::A;
}
コピーコンストラクタは特別です。
template<class...T> B(T... t) : A(t...) {}
は、このテンプレートコンストラクタはこれの副作用が何であるかBの形に
私はを知りたいA.を構築できるようになります:私はBにテンプレートコンストラクタを追加することができますしかし
どのコンストラクタが効果的に定義していますか?
たとえば、このようにAをBに移動できますか? Bでまだusing A::A
宣言が必要ですか? std :: forward black magicを追加する必要がありますか?
'テンプレート B(T ... t)'はコピーコンストラクタではありません。 'T &&'であっても、後の場合は、デフォルトのコピーコンストラクタ(' B b(non_const_b);)を完全に一致させることができます。 –
Jarod42