aboutsummaryrefslogtreecommitdiff
path: root/Examples/test-suite/errors/cpp_template_explicit_instantiation.i
diff options
context:
space:
mode:
Diffstat (limited to 'Examples/test-suite/errors/cpp_template_explicit_instantiation.i')
-rw-r--r--Examples/test-suite/errors/cpp_template_explicit_instantiation.i24
1 files changed, 24 insertions, 0 deletions
diff --git a/Examples/test-suite/errors/cpp_template_explicit_instantiation.i b/Examples/test-suite/errors/cpp_template_explicit_instantiation.i
new file mode 100644
index 000000000..97513724b
--- /dev/null
+++ b/Examples/test-suite/errors/cpp_template_explicit_instantiation.i
@@ -0,0 +1,24 @@
+%module xxx
+
+%inline %{
+namespace std {
+ template<typename T> class vector {};
+}
+template<typename T> void Func() {}
+%}
+
+%inline %{
+// Class template
+template class std::vector<int>; // C++03 template explicit instantiation definition in C++
+extern template class std::vector<int>; // C++11 template explicit instantiation declaration (extern template)
+%}
+%template(VectorInt) std::vector<int>; // SWIG template instantiation
+
+%inline %{
+// Function template
+template void Func<int>(); // C++03 template explicit instantiation definition in C++
+extern template void Func<int>(); // C++11 template explicit instantiation declaration (extern template)
+%}
+%template(FuncInt) Func<int>; // SWIG template instantiation
+
+