use Inline SWIG => <<"END_CODE", SWIG_ARGS => '-c++ -shadow', CC => 'g++', LD=>'g++'; class Foo { public: int meaning() { return 42; }; }; END_CODE my $o = new Foo(); print $o->meaning(),"\n"; use Inline SWIG => ' ', SWIG_INTERFACE => <<"END_CODE", SWIG_ARGS => '-c++', CC => "g++", LD => "g++"; %include std_string.i %inline { template class Bar { Type _val; public: Bar(Type v) : _val(v) {} Type meaning() { return _val; } }; } %template(Bar_i) Bar; %template(Bar_d) Bar; %template(Bar_s) Bar; END_CODE my $o = new Bar_i(1); print $o->meaning(),"\n"; my $o = new Bar_d(2); print $o->meaning(),"\n"; my $o = new Bar_s("hello"); print $o->meaning(),"\n";