%module template_default_arg_overloaded_extend %inline %{ namespace gaia2 { struct Filter {}; struct SearchPoint {}; struct DataSet {}; template class BaseSearchSpace {}; template class BaseResultSet { public: const char *over(int i = 0) { return "over(int)"; } }; } %} // Specialized template extend %extend gaia2::BaseResultSet { int go_get_method(int n, gaia2::SearchPoint, int offset = -1) { return offset; } const char *over(gaia2::SearchPoint, int x = 0) { return "over(giai2::SearchPoint, int)"; } } // Generic extend for all template instantiations %extend gaia2::BaseResultSet { int go_get_template(int n, SearchPointType sss, int offset = -2) { return offset; } const char *over(bool b, SearchPointType, int x = 0) { return "over(bool, SearchPointType, int)"; } } %template(ResultSet) gaia2::BaseResultSet;