| %module nested_template_base |
| |
| #ifdef SWIGOCAML |
| %warnfilter(SWIGWARN_PARSE_KEYWORD) val; |
| #endif |
| |
| %inline %{ |
| template <class T> class OuterT { |
| public: |
| T outer(T t) { return t; } |
| }; |
| %} |
| |
| // The %template goes after OuterT and before OuterC as OuterC::InnerC's base is handled inside OuterC |
| %template(OuterTInnerS) OuterT<OuterC::InnerS>; |
| |
| #if !defined(SWIGCSHARP) && !defined(SWIGJAVA) |
| %feature("flatnested") OuterC::InnerS; |
| %feature("flatnested") OuterC::InnerC; |
| #endif |
| |
| |
| %inline %{ |
| class OuterC { |
| public: |
| struct InnerS; |
| class InnerC; |
| }; |
| |
| struct OuterC::InnerS { |
| int val; |
| InnerS(int val = 0) : val(val) {} |
| }; |
| |
| |
| class OuterC::InnerC : public OuterT<InnerS> { |
| public: |
| OuterT<InnerS>& innerc() { |
| return *this; |
| } |
| }; |
| %} |