/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/cpp11_template_explicit.i
64 строки
2 KB
William S Fulton
Ocaml test-suite 'passes' with c++11 testing now
27 мар 2022, 15:50
27 мар 2022, 15:50
f441530
Код
Авторство
О чём код?
/* This unit tests whether SWIG correctly parses the code and makes wrappers for the new C++11 extern templates (explicit template instantiation without using the translation unit). */ %module cpp11_template_explicit /* Suppress SWIG warnings related to explicit template instantiation and extern templates */ #pragma SWIG nowarn=SWIGWARN_PARSE_EXPLICIT_TEMPLATE #pragma SWIG nowarn=SWIGWARN_PARSE_EXTERN_TEMPLATE %inline %{ template<typename T> class Temper { public: T valu; }; class A { public: int member; int memberFunction() { return 100; } }; class B { public: short member; short memberFunction() { return 100; } }; template class Temper<A>; extern template class Temper<B>; template class Temper<A*>; extern template class Temper<B*>; template class Temper<int>; extern template class Temper<short>; /* Templated function to check support for extern template functions */ template <typename T> T my_templated_function(int a, double b) { return T(); } /* Explicit extern function template instantiation with simple type */ extern template int my_templated_function<int>(int, double); template int my_templated_function<int>(int, double); /* Explicit extern function template instantiation with more complex types */ extern template A my_templated_function<A>(int, double); template A my_templated_function<A>(int, double); extern template Temper<int> my_templated_function<Temper<int>>(int, double); template Temper<int> my_templated_function<Temper<int>>(int, double); %} %template(TemperInt) Temper<int>; /* Enable several versions of the templated function */ %template(my_templated_function_int ) my_templated_function<int>; %template(my_templated_function_A ) my_templated_function<A>; %template(my_templated_function_TemperInt) my_templated_function<Temper<int>>;