%module li_std_containers_overload // Suppress warning that ought not to appear, but there is no easy fix %warnfilter(SWIGWARN_LANG_OVERLOAD_SHADOW) VectorOverload; %include %include %inline %{ struct X {}; struct Y {}; %} %template(VectorX) std::vector; %template(VectorY) std::vector; %template(VectorString) std::vector; %template(VectorInt) std::vector; %inline %{ using namespace std; string VectorOverload(vector v) { return "vector"; } string VectorOverload(vector v) { return "vector"; } string VectorOverload(vector v) { return "vector"; } string VectorOverload(vector v) { return "vector"; } %}