From 15692f0e89a75131a56732b828ba88a82fa67203 Mon Sep 17 00:00:00 2001 From: William S Fulton Date: Sat, 26 Nov 2022 01:27:04 +0000 Subject: [PATCH] Add missing testcase cpp11_template_parameters_decltype --- .../cpp11_template_parameters_decltype.i | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Examples/test-suite/cpp11_template_parameters_decltype.i diff --git a/Examples/test-suite/cpp11_template_parameters_decltype.i b/Examples/test-suite/cpp11_template_parameters_decltype.i new file mode 100644 index 000000000..ab2c3e4fc --- /dev/null +++ b/Examples/test-suite/cpp11_template_parameters_decltype.i @@ -0,0 +1,51 @@ +%module cpp11_template_parameters_decltype + +%include +%include +%include + +#pragma SWIG nowarn=SWIGWARN_CPP11_DECLTYPE + +#if 0 +// to fix (non-template expression equivalent to template expression further down): +%inline %{ +#include +#include + void f(bool c = std::is_constructible>>().begin()->first)>::value) {} +%} +#endif + +%inline %{ +// Github issue #1590 +struct Converter { + std::string to_json() const {} +}; +struct Json { + Json(std::string s) {} + template < class T, class = decltype(&T::to_json) > + Json(const T & t) : Json(t.to_json()) {} + +// Github issue #1589 +// To fix +#if !defined(SWIG) + // Implicit constructor: map-like objects (std::map, std::unordered_map, etc) + template ().begin()->first)>::value, + int>::type = 0> + Json(const M & m) : Json(object(m.begin(), m.end())) {} +#endif +}; +%} + +// %template(Json) Json::Json; // not working +%template(Json) Json::Json; // workaround + + +%inline %{ +// Github issue #1589 +template +void A() { } +%} + +// %template(A) A<>; // not working +%template(A) A; // workaround