在这个例子中:
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);
使用声明会变成继承构造函数吗?
Clang 拒绝代码DEMO,而 g++ 接受它。
请注意,如果我们写:
using T::X::X;
两个编译器都接受代码并将其视为继承构造函数。是否using T::X
允许按标准成为继承构造函数?