supongamos que escribo una clase de plantilla con un constructor de plantilla, así.El constructor de plantillas en la clase de plantilla debe definirse en la definición de clase?
template<typename T>
class X{
template<typename S>
X(X<S> x){}
};
compila bien. Sin embargo, cuando intento de definir el constructor fuera de la declaración de plantilla, así:
template<typename T>
class X{
template<typename S>
X(X<S> x);
};
template<typename T, typename S>
X<T>::X(X<S> y){}
recibo el siguiente error:
error: invalid use of incomplete type ‘class X<T>’
por qué? ¿No es posible definir un constructor de plantilla de una clase de plantilla fuera de la declaración de clase?