この例では:
template<class T>
struct S : T
{
using T::X;
};
T::X
X
のメンバーを参照する従属名ですT
。S<T>
でインスタンス化されている場合T = X
:
struct X
{
X(int) {}
};
...
S<X> s(42);
using 宣言は継承コンストラクタになりますか?
Clang はコードを拒否しますDEMOが、g++ はそれを受け入れます。
次のように書くと注意してください。
using T::X::X;
どちらのコンパイラもコードを受け入れ、継承コンストラクタとして扱います。using T::X
標準で継承コンストラクターになることは許可されていますか?