mirror of https://github.com/swig/swig
44 lines
797 B
OpenEdge ABL
44 lines
797 B
OpenEdge ABL
%module template_construct
|
|
|
|
// Tests templates to make sure an extra <> in a constructor and destructor is ok.
|
|
|
|
%inline %{
|
|
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>;
|