Merge two commits from movable-types-inputs
Performance optimisation for parameters passed by value that are C++11 movable. Test copy constructor and assignment operator calls for movable types Conflicts: CHANGES.current
This commit is contained in:
commit
ea193a98f3
6 changed files with 53 additions and 3 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, 0, 1, 1, 0, 2);
|
||||
}
|
||||
Counter.check_counts(2, 0, 1, 1, 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, 0, 1, 1, 0, 2);
|
||||
mo.delete();
|
||||
Counter.check_counts(2, 0, 1, 1, 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, 0, 1, 1, 0, 2)
|
||||
del mo
|
||||
Counter.check_counts(2, 0, 1, 1, 0, 3)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue