Compiler Error C2949

'symbol' : explicit instantiation; cannot use 'auto' and 'extern' on the same template-class specialization

A template class was instantiated more than once, once using the extern storage-class specifier and once without.

If you must duplicate an instantiation of a template class, make sure that you use the same storage-class specifier for each declaration.

The following code generates this error:

template <class T> class X {};
extern template X<int>;
template X<int>;   // error