Add support for conversion operators with ref-qualifiers
This commit is contained in:
parent
0e50ef30b1
commit
950edc1c00
4 changed files with 40 additions and 3 deletions
|
|
@ -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()); }
|
||||
};
|
||||
%}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue