William S Fulton
cdc08c9325
Move variadic function template tests to separate testcase
2023-01-03 21:26:12 +00:00
William S Fulton
041ec79747
More variadic template testing
...
Test less conventional function ptr parameters
2022-12-30 22:31:56 +00:00
William S Fulton
004af63f3c
Syntax error fixes parsing more elaborate parameter pack arguments
...
that are function pointers and member function pointers.
template <typename... V> struct VariadicParms {
void ParmsFuncPtrPtr(int (*)(V*...)) {}
void ParmsFuncPtrPtrRef(int (*)(V*&...)) {}
void ParmsFuncPtrPtrRValueRef(int (*)(V*&&...)) {}
void ParmsFuncPtrRef(int (*)(V&...)) {}
void ParmsFuncPtrRValueRef(int (*)(V&&...)) {}
void ParmsMemFuncPtrPtr(int (KlassMemFuncs::*)(V*...)) {}
void ParmsMemFuncPtrPtrRef(int (KlassMemFuncs::*)(V*&...)) {}
void ParmsMemFuncPtrPtrRValueRef(int (KlassMemFuncs::*)(V*&&...)) {}
void ParmsMemFuncPtrRef(int (KlassMemFuncs::*)(V&...)) {}
void ParmsMemFuncPtrRValueRef(int (KlassMemFuncs::*)(V&&...)) {}
};
%template(VariadicParms0) VariadicParms<>;
%template(VariadicParms1) VariadicParms<A>;
Also in various other places such as within noexcept specifiers:
template<typename T, typename... Args>
void emplace(Args &&... args) noexcept(
std::is_nothrow_constructible<T, Args &&...>::value);
Issue #1863
2022-12-30 00:19:02 +00:00
William S Fulton
674abaddbf
Fix instantiation of variadic class templates
...
containing parameter pack arguments that are function pointers.
template <typename... V> struct VariadicParms {
void ParmsFuncPtrVal(int (*)(V...)) {}
};
%template(VariadicParms0) VariadicParms<>;
%template(VariadicParms1) VariadicParms<A>;
2022-12-29 23:38:17 +00:00
William S Fulton
70837bbc26
Fix syntax error parsing variadic template parameter pack arguments
...
that are function pointers
Issue #1863
2022-12-23 16:25:50 +00:00
William S Fulton
f648e58cb1
Extend variadic template support to various type combinations
2022-12-22 21:23:44 +00:00
William S Fulton
67c4c2186c
Support multiple arguments in variadic templates.
...
Remove warning SWIGWARN_CPP11_VARIADIC_TEMPLATE which was issued if more
than one argument was used for a variadic template.
SwigType enhancement: 'v.' now represents a variadic argument.
2022-12-22 21:23:39 +00:00
William S Fulton
738cc36aab
Rename all C++0x to C++11 and cpp0x to cpp11
2013-10-07 20:37:00 +01:00