diff options
author | William S Fulton <wsf@fultondesigns.co.uk> | 2022-12-29 21:04:48 +0000 |
---|---|---|
committer | William S Fulton <wsf@fultondesigns.co.uk> | 2022-12-30 00:19:02 +0000 |
commit | 004af63f3cef63fbe91389cec1ad0c84498915e2 (patch) | |
tree | c8692bb445e824465f5481c6e4e651a7f07b253f /CHANGES.current | |
parent | 674abaddbf854e2374f115ef08e59fa79702e19a (diff) | |
download | swig-004af63f3cef63fbe91389cec1ad0c84498915e2.tar.gz |
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
Diffstat (limited to 'CHANGES.current')
-rw-r--r-- | CHANGES.current | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/CHANGES.current b/CHANGES.current index e4733c773..4cdfee90c 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -7,6 +7,33 @@ the issue number to the end of the URL: https://github.com/swig/swig/issues/ Version 4.2.0 (in progress) =========================== +2022-12-29: wsfulton + #1863 Syntax error fixes parsing more elaborate parameter pack arguments that are + used in function pointers, 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); + 2022-12-27: wsfulton Fix instantiation of variadic class templates containing parameter pack arguments that are function pointers. |