/trunk/Examples/test-suite/template_default_class_parms.i

# · Swig · 33 lines · 29 code · 4 blank · 0 comment · 0 complexity · b4349a01fa1ab386f8217a20de65c113 MD5 · raw file

  1. %module template_default_class_parms
  2. %inline %{
  3. namespace Space {
  4. struct SomeType {};
  5. struct AnotherType {};
  6. template<typename C, typename D = SomeType, typename E = int> class Bar {
  7. public:
  8. C CType;
  9. D DType;
  10. E EType;
  11. Bar(C c, D d, E e) {}
  12. C method(C c, D d, E e) { return c; }
  13. };
  14. template<typename T = SomeType> class Foo {
  15. public:
  16. T TType;
  17. Foo(T t) {}
  18. T method(T t) { return t; }
  19. };
  20. template<typename T = int> class ATemplate {};
  21. }
  22. %}
  23. // Use defaults
  24. %template(DefaultBar) Space::Bar<double>;
  25. %template(DefaultFoo) Space::Foo<>;
  26. // Don't use all defaults
  27. %template(BarAnotherTypeBool) Space::Bar<Space::AnotherType, bool>;
  28. %template(FooAnotherType) Space::Foo<Space::AnotherType>;
  29. %template() Space::ATemplate<>;