Add support for conversion operators with ref-qualifiers

This commit is contained in:
William S Fulton 2017-08-29 21:11:26 +01:00
commit 950edc1c00
4 changed files with 40 additions and 3 deletions

View file

@ -74,3 +74,18 @@ struct Renames {
string S3(int i) const & { return string(); }
};
%}
// Conversion operators
%rename(StringConvertCopy) operator string() &;
%rename(StringConvertMove) operator string() &&;
%feature("ignore", "0") operator string() &&; // unignore as it is ignored by default
%inline %{
struct ConversionOperators {
virtual operator string() & { return string(); }
virtual operator string() && { return std::move(string()); }
};
struct ConversionOperators2 {
virtual operator string() && { return std::move(string()); }
};
%}

View file

@ -42,6 +42,15 @@ public class cpp11_ref_qualifiers_runme {
r.SS1(0);
r.SS2(0);
r.SS3(0);
// Conversion operators
String s = null;
ConversionOperators co = new ConversionOperators();
s = co.StringConvertCopy();
s = co.StringConvertMove();
ConversionOperators2 co2 = new ConversionOperators2();
s = co2.StringConvertMove();
}
}

View file

@ -35,3 +35,11 @@ r.RR3()
r.SS1(0)
r.SS2(0)
r.SS3(0)
# Conversion operators
co = cpp11_ref_qualifiers.ConversionOperators()
s = co.StringConvertCopy()
s = co.StringConvertMove()
co2 = cpp11_ref_qualifiers.ConversionOperators2()
s = co2.StringConvertMove()