В этом примере:
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
стать наследованием-конструктором стандартным?