cannot define a nested UDT of a template class out of line
A nested UDT (user-defined type) was implemented (defined) outside of its class, which is not supported by the Visual C++ compiler.
The following sample generates C2687:
template <class T> struct A { struct B; }; template <class T> struct A<T>::B { // C2687 }; /* // uncomment this class and delete other code in this sample to resolve template <class T> struct A { struct B { }; }; */ void main() { }