In diesem Beispiel:In using-declaration können abhängige Namen nach Templatesubstitution für Konstruktoren gerendert werden?
template<class T>
struct S : T
{
using T::X;
};
T::X
ist ein Name, der abhängig X
T
in dem Element verweist. Wenn S<T>
mit T = X
instanziiert:
struct X
{
X(int) {}
};
...
S<X> s(42);
Wird die using-Deklaration werden vererben-Konstruktor?
Clang lehnt den Code DEMO ab, während g ++ das akzeptiert.
Beachten Sie, dass, wenn wir schreiben:
using T::X::X;
Beide Compiler den Code und behandeln es als Vererbungs-Konstruktor akzeptieren. Darf using T::X
standardmäßig zum Erben-Konstruktor werden?
Siehe [Kernproblem 2070] (https://wg21.link/CWG2070). –
Vielen Dank, antworten aktualisiert. – OmnipotentEntity