diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2022-12-23 16:25:50 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2022-12-23 16:25:50 +0000 |
commit | 70837bbc2638ec18bd07d333c6e474c89f4ce695 (patch) | |
tree | 84e7553d0957d120b536a6c0ef75ac34e1473416 /Examples | |
parent | b13f584258079dd88a4ca87412b87ac4464686df (diff) | |
download | swig-70837bbc2638ec18bd07d333c6e474c89f4ce695.tar.gz |
Fix syntax error parsing variadic template parameter pack arguments
that are function pointers
Issue #1863
Diffstat (limited to 'Examples')
-rw-r--r-- | Examples/test-suite/cpp11_variadic_templates.i | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/Examples/test-suite/cpp11_variadic_templates.i b/Examples/test-suite/cpp11_variadic_templates.i index 9ea11368e..bb370cebf 100644 --- a/Examples/test-suite/cpp11_variadic_templates.i +++ b/Examples/test-suite/cpp11_variadic_templates.i @@ -143,15 +143,38 @@ public: %inline %{ template <typename... V> struct VariadicParms { public: + void ParmsVal(V... vparms_v) {} void ParmsPtr(V*... vparms_p) {} void ParmsPtrRef(V*&... vparms_pr) {} void ParmsPtrRValueRef(V*&&... vparms_rvr) {} - void ParmsVal(V... vparms_v) {} void ParmsRef(V&... vparms_r) {} + void ParmsRValueRef(V&&... vparms_r) {} void ParmsConstRef(const V&... vparms_cr) {} + +// TODO +// void ParmsFuncPtr(int (*)(V...)) {} }; %} %template(VariadicParms1) VariadicParms<A>; %template(VariadicParms2) VariadicParms<A,B>; %template(VariadicParms3) VariadicParms<A,B,C>; + + +// #1863 +%inline %{ +class Container { +public: +template<typename... Args> +static void notifyMyTypes(void (fn)(Args...)); +}; +%} +%{ +template<typename... Args> + void Container::notifyMyTypes(void (fn)(Args...)) {} + +// Explicit template instantiations +template void Container::notifyMyTypes<>(void (tt)()); +template void Container::notifyMyTypes<int>(void (tt)(int)); +template void Container::notifyMyTypes<int, double>(void (tt)(int, double)); +%} |