Fix assertion handling defaultargs
Occurs when using %extend for a template class and the extended methods contain default arguments. Closes #611
This commit is contained in:
parent
b0ba1cae76
commit
15ebf3df03
5 changed files with 87 additions and 7 deletions
44
Examples/test-suite/template_default_arg_overloaded_extend.i
Normal file
44
Examples/test-suite/template_default_arg_overloaded_extend.i
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
%module template_default_arg_overloaded_extend
|
||||
|
||||
%inline %{
|
||||
namespace gaia2 {
|
||||
|
||||
struct Filter {};
|
||||
struct SearchPoint {};
|
||||
struct DataSet {};
|
||||
|
||||
template <typename SearchPointType, typename DataSetType>
|
||||
class BaseSearchSpace {};
|
||||
|
||||
template <typename SearchPointType, typename DataSetType>
|
||||
class BaseResultSet {
|
||||
public:
|
||||
const char *over(int i = 0) {
|
||||
return "over(int)";
|
||||
}
|
||||
};
|
||||
}
|
||||
%}
|
||||
|
||||
// Specialized template extend
|
||||
%extend gaia2::BaseResultSet<gaia2::SearchPoint, gaia2::DataSet> {
|
||||
int go_get(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<gaia2::SearchPoint, gaia2::DataSet>;
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue