diff options
Diffstat (limited to 'Examples/test-suite/template_construct.i')
-rw-r--r-- | Examples/test-suite/template_construct.i | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/Examples/test-suite/template_construct.i b/Examples/test-suite/template_construct.i index a6e8c3c33..7949523ce 100644 --- a/Examples/test-suite/template_construct.i +++ b/Examples/test-suite/template_construct.i @@ -1,15 +1,43 @@ %module template_construct -// Tests templates to make sure an extra <> in a constructor is ok. +// Tests templates to make sure an extra <> in a constructor and destructor is ok. %inline %{ -template<class T> +template<class T> class Foo { T y; public: +#ifdef SWIG Foo<T>(T x) : y(x) { } + ~Foo<T>() {} +#else + // Modern compilers (C++20) reject this, so feed the compiler the corrected version + Foo(T x) : y(x) { } + ~Foo() {} +#endif }; %} %template(Foo_int) Foo<int>; + +%inline %{ +template<> +class Foo<short> { + short y; +public: +#ifdef SWIG + Foo<short>(short x) : y(x) { } + Foo<short>() : y(0) { } + virtual ~Foo<short>() {} +#else + // Modern compilers (C++20) reject this, so feed the compiler the corrected version + // version. + Foo(short x) : y(x) { } + Foo() : y(0) { } + virtual ~Foo() {} +#endif +}; +%} + +%template(Foo_short) Foo<short>; |