Angenommen, ich schreibe eine Template-Klasse mit einem Template-Konstruktor, so.Vorlagenkonstruktor in der Vorlagenklasse muss in der Klassendefinition definiert sein?
template<typename T>
class X{
template<typename S>
X(X<S> x){}
};
kompiliert fein. Aber wenn ich versuche, den Konstruktor außerhalb der Template-Deklaration zu definieren, wie folgt aus:
template<typename T>
class X{
template<typename S>
X(X<S> x);
};
template<typename T, typename S>
X<T>::X(X<S> y){}
Ich erhalte den folgenden Fehler:
error: invalid use of incomplete type ‘class X<T>’
warum? Ist es nicht möglich, einen Vorlagenkonstruktor einer Vorlagenklasse außerhalb der Klassendeklaration zu definieren?