C++11: extern template Explained With Simple Example
In C++11 (Introduction to C++11), extern template is added to optimize the compile time and object size. Earlier C++ compiler (C++ 03) instantiate a template function or class whenever it encounters a fully defined template function or class. If the template is used in multiple files, then compiler must create multiple instances of template function or class only to later discard all the instance but one. This would result in extra compile time and increased object file size. In C++ 03 there was no way to avoid this.
In C++11, extern template feature is introduced to avoid this situation.
Format of extern template is as follows
extern template void DemoTemplateFunction <int> ();
extern template class NUM <type>;