parser(C++11) : explicit template function support, see https://github.com/swig/swig/issues/2131
This commit is contained in:
parent
5656da3f31
commit
8be363eae3
3 changed files with 50 additions and 3 deletions
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
%module cpp11_template_explicit
|
||||
|
||||
/* Explicitely silence SWIG warning related to explicit templates */
|
||||
#pragma SWIG nowarn=SWIGWARN_PARSE_EXPLICIT_TEMPLATE
|
||||
|
||||
%inline %{
|
||||
|
|
@ -33,6 +34,30 @@ 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>>;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue