Test copy constructor and assignment operator calls for movable types
This is the current state of play where the copy constructor and copy assignment operators are called, even for movable types passed as function parameters.
This commit is contained in:
parent
e1173cac26
commit
1ece69cafd
4 changed files with 37 additions and 0 deletions
|
|
@ -27,6 +27,8 @@ struct MoveOnly {
|
|||
|
||||
static MoveOnly create() { return MoveOnly(111); }
|
||||
// static const MoveOnly createConst() { return MoveOnly(111); } // not supported by default
|
||||
|
||||
// static void take(MoveOnly mo) { if (debug) cout << "take(MoveOnly)" << " " << &mo << endl; }
|
||||
};
|
||||
%}
|
||||
|
||||
|
|
@ -48,5 +50,7 @@ struct MovableCopyable {
|
|||
|
||||
static MovableCopyable create() { return MovableCopyable(111); }
|
||||
static const MovableCopyable createConst() { return MovableCopyable(111); }
|
||||
|
||||
static void take(MovableCopyable mc) { if (debug) cout << "take(MovableCopyable)" << " " << &mc << endl; }
|
||||
};
|
||||
%}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ using cpp11_move_onlyNamespace;
|
|||
public class cpp11_move_only_runme {
|
||||
|
||||
public static void Main() {
|
||||
|
||||
// Output
|
||||
Counter.reset_counts();
|
||||
using (MoveOnly mo = MoveOnly.create()) {
|
||||
}
|
||||
|
|
@ -19,5 +21,14 @@ public class cpp11_move_only_runme {
|
|||
using (MovableCopyable mo = MovableCopyable.createConst()) {
|
||||
}
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 3);
|
||||
|
||||
// Input
|
||||
Counter.reset_counts();
|
||||
using (MovableCopyable mo = new MovableCopyable(222)) {
|
||||
Counter.check_counts(1, 0, 0, 0, 0, 0);
|
||||
MovableCopyable.take(mo);
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 2);
|
||||
}
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 3);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ public class cpp11_move_only_runme {
|
|||
|
||||
public static void main(String argv[]) {
|
||||
|
||||
// Output
|
||||
{
|
||||
Counter.reset_counts();
|
||||
MoveOnly mo = MoveOnly.create();
|
||||
|
|
@ -35,5 +36,16 @@ public class cpp11_move_only_runme {
|
|||
mo.delete();
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 3);
|
||||
}
|
||||
|
||||
// Input
|
||||
{
|
||||
Counter.reset_counts();
|
||||
MovableCopyable mo = new MovableCopyable(222);
|
||||
Counter.check_counts(1, 0, 0, 0, 0, 0);
|
||||
MovableCopyable.take(mo);
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 2);
|
||||
mo.delete();
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
from cpp11_move_only import *
|
||||
|
||||
# Output
|
||||
Counter.reset_counts()
|
||||
mo = MoveOnly.create()
|
||||
del mo
|
||||
|
|
@ -15,3 +16,12 @@ Counter.reset_counts()
|
|||
mo = MovableCopyable.createConst()
|
||||
del mo
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 3)
|
||||
|
||||
# Input
|
||||
Counter.reset_counts()
|
||||
mo = MovableCopyable(222)
|
||||
Counter.check_counts(1, 0, 0, 0, 0, 0)
|
||||
MovableCopyable.take(mo)
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 2)
|
||||
del mo
|
||||
Counter.check_counts(2, 1, 1, 0, 0, 3)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue