%module xxx %inline %{ namespace std { template class vector {}; } template void Func() {} %} %inline %{ // Class template template class std::vector; // C++03 template explicit instantiation definition in C++ extern template class std::vector; // C++11 template explicit instantiation declaration (extern template) %} %template(VectorInt) std::vector; // SWIG template instantiation %inline %{ // Function template template void Func(); // C++03 template explicit instantiation definition in C++ extern template void Func(); // C++11 template explicit instantiation declaration (extern template) %} %template(FuncInt) Func; // SWIG template instantiation