Suppose I write a template class with a template constructor, for example.
template<typename T>
class X{
template<typename S>
X(X<S> x){}
};
compiles fine. However, when I try to define a constructor outside the template declaration, for example:
template<typename T>
class X{
template<typename S>
X(X<S> x);
};
template<typename T, typename S>
X<T>::X(X<S> y){}
I get the following error:
error: invalid use of incomplete type ‘class X<T>’
why? Can't define a template class constructor for a template outside of a class declaration?
source
share