1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | #include <iostream> #define LAMBDA(x) [&] { return x; } class A { public: A() : i(42) {}; A(const A& a) : i(a.i) { std::cout << "Copy "; } A(A&& a) : i(a.i) { std::cout << "Move "; } int i; }; class B1 { public: B1(const A& a_) : a(a_) {} B1(A&& a_) : a(std::move(a_)) {} int get_i() { return a.i; } A a; }; class B2 { public: B2(const A& a_) : a(a_) {} B2(A&& a_) : a(std::move(a_)) {} template <class LAMBDA_T> B2(LAMBDA_T&& f, decltype(f())* dummy = 0) : a(f()) {} int get_i() { return a.i; } A a; }; int main() { A a; std::cout << "B1 b11( a ): "; B1 b11(a); std::cout << "i: " << b11.get_i(); std::cout << std::endl; std::cout << "B2 b12(LAMBDA(a)): "; B2 b12(LAMBDA(a)); std::cout << "i: " << b12.get_i(); std::cout << std::endl; std::cout << std::endl; std::cout << "B1 b21( std::move(a) ): "; B1 b21(std::move(a)); std::cout << "i: " << b21.get_i(); std::cout << std::endl; std::cout << "B2 b22(LAMBDA(std::move(a))): "; B2 b22(LAMBDA(std::move(a))); std::cout << "i: " << b22.get_i(); std::cout << std::endl; std::cout << std::endl; std::cout << "B1 b31(( A() )): "; B1 b31((A())); std::cout << "i: " << b31.get_i(); std::cout << std::endl; std::cout << "B2 b32((LAMBDA(A()))): "; B2 b32((LAMBDA(A()))); std::cout << "i: " << b32.get_i(); std::cout << std::endl; std::cout << std::endl; } |
I2luY2x1ZGUgPGlvc3RyZWFtPgoKI2RlZmluZSBMQU1CREEoeCkgWyZdIHsgcmV0dXJuIHg7IH0KCmNsYXNzIEEKewpwdWJsaWM6CiAgQSgpIDogaSg0Mikge307CiAgQShjb25zdCBBJiBhKSA6IGkoYS5pKSB7IHN0ZDo6Y291dCA8PCAiQ29weSAiOyB9CiAgQShBJiYgYSkgOiBpKGEuaSkgeyBzdGQ6OmNvdXQgPDwgIk1vdmUgIjsgfQogIGludCBpOwp9OwoKY2xhc3MgQjEKewpwdWJsaWM6CiAgQjEoY29uc3QgQSYgYV8pIDogYShhXykge30KICBCMShBJiYgYV8pIDogYShzdGQ6Om1vdmUoYV8pKSB7fQogIGludCBnZXRfaSgpIHsgcmV0dXJuIGEuaTsgfQogIEEgYTsKfTsKCmNsYXNzIEIyCnsKcHVibGljOgogIEIyKGNvbnN0IEEmIGFfKSA6IGEoYV8pIHt9CiAgQjIoQSYmIGFfKSA6IGEoc3RkOjptb3ZlKGFfKSkge30KICB0ZW1wbGF0ZSA8Y2xhc3MgTEFNQkRBX1Q+CiAgQjIoTEFNQkRBX1QmJiBmLCBkZWNsdHlwZShmKCkpKiBkdW1teSA9IDApIDogYShmKCkpIHt9CiAgaW50IGdldF9pKCkgeyByZXR1cm4gYS5pOyB9CiAgQSBhOwp9OwoKaW50IG1haW4oKQp7CiAgQSBhOwogIHN0ZDo6Y291dCA8PCAiQjEgYjExKCAgICAgICBhICk6ICI7CiAgQjEgYjExKGEpOwogIHN0ZDo6Y291dCA8PCAiaTogIiA8PCBiMTEuZ2V0X2koKTsKICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogIHN0ZDo6Y291dCA8PCAiQjIgYjEyKExBTUJEQShhKSk6ICI7CiAgQjIgYjEyKExBTUJEQShhKSk7CiAgc3RkOjpjb3V0IDw8ICJpOiAiIDw8IGIxMi5nZXRfaSgpOwogIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCiAgc3RkOjpjb3V0IDw8ICJCMSBiMjEoICAgICAgIHN0ZDo6bW92ZShhKSApOiAiOwogIEIxIGIyMShzdGQ6Om1vdmUoYSkpOwogIHN0ZDo6Y291dCA8PCAiaTogIiA8PCBiMjEuZ2V0X2koKTsKICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogIHN0ZDo6Y291dCA8PCAiQjIgYjIyKExBTUJEQShzdGQ6Om1vdmUoYSkpKTogIjsKICBCMiBiMjIoTEFNQkRBKHN0ZDo6bW92ZShhKSkpOwogIHN0ZDo6Y291dCA8PCAiaTogIiA8PCBiMjIuZ2V0X2koKTsKICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwogIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgogIHN0ZDo6Y291dCA8PCAiQjEgYjMxKCggICAgICAgQSgpICkpOiAiOyAKICBCMSBiMzEoKEEoKSkpOyAKICBzdGQ6OmNvdXQgPDwgImk6ICIgPDwgYjMxLmdldF9pKCk7CiAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICBzdGQ6OmNvdXQgPDwgIkIyIGIzMigoTEFNQkRBKEEoKSkpKTogIjsKICBCMiBiMzIoKExBTUJEQShBKCkpKSk7CiAgc3RkOjpjb3V0IDw8ICJpOiAiIDw8IGIzMi5nZXRfaSgpOwogIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CiAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKfQ==
-
upload with new input
-
result: Success time: 0s memory: 2828 kB returned value: 0
B1 b11( a ): Copy i: 42 B2 b12(LAMBDA(a)): Copy i: 42 B1 b21( std::move(a) ): Move i: 42 B2 b22(LAMBDA(std::move(a))): Move i: 42 B1 b31(( A() )): Move i: 42 B2 b32((LAMBDA(A()))): i: 42


