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 | #include <iostream> struct S { S() {} S(const S&) { std::cout << "Copy" << std::endl; } S(S&&) { std::cout << "Move" << std::endl; } }; S f1(S a) { return a; } S f2(const S& a) { return a; } #define DELAY(x) [&]{ return x; } template <class F> S f3(F a) { return a(); } int main() { S t; std::cout << "Without delay:" << std::endl; S s1 = f1(t); std::cout << "With delay:" << std::endl; S s2 = f3(DELAY(t)); std::cout << "Without delay pass by ref:" << std::endl; S s3 = f2(t); std::cout << "Without delay pass by ref (temporary) (should have 0 copies, will get 1):" << std::endl; S s4 = f2(S()); std::cout << "With delay (temporary) (no copies, best):" << std::endl; S s5 = f3(DELAY(S())); } |
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IFMKewogIFMoKSB7fQogIFMoY29uc3QgUyYpIHsgc3RkOjpjb3V0IDw8ICJDb3B5IiA8PCBzdGQ6OmVuZGw7IH0KICBTKFMmJikgeyBzdGQ6OmNvdXQgPDwgIk1vdmUiIDw8IHN0ZDo6ZW5kbDsgfQp9OwoKUyBmMShTIGEpIHsKICByZXR1cm4gYTsKfQoKUyBmMihjb25zdCBTJiBhKSB7CiAgcmV0dXJuIGE7Cn0KCiNkZWZpbmUgREVMQVkoeCkgWyZdeyByZXR1cm4geDsgfQoKdGVtcGxhdGUgPGNsYXNzIEY+ClMgZjMoRiBhKSB7CiAgcmV0dXJuIGEoKTsKfQoKaW50IG1haW4oKQp7CiAgUyB0OwogIHN0ZDo6Y291dCA8PCAiV2l0aG91dCBkZWxheToiIDw8IHN0ZDo6ZW5kbDsKICBTIHMxID0gZjEodCk7CiAgc3RkOjpjb3V0IDw8ICJXaXRoIGRlbGF5OiIgPDwgc3RkOjplbmRsOwogIFMgczIgPSBmMyhERUxBWSh0KSk7CiAgc3RkOjpjb3V0IDw8ICJXaXRob3V0IGRlbGF5IHBhc3MgYnkgcmVmOiIgPDwgc3RkOjplbmRsOwogIFMgczMgPSBmMih0KTsKICBzdGQ6OmNvdXQgPDwgIldpdGhvdXQgZGVsYXkgcGFzcyBieSByZWYgKHRlbXBvcmFyeSkgKHNob3VsZCBoYXZlIDAgY29waWVzLCB3aWxsIGdldCAxKToiIDw8IHN0ZDo6ZW5kbDsKICBTIHM0ID0gZjIoUygpKTsKICBzdGQ6OmNvdXQgPDwgIldpdGggZGVsYXkgKHRlbXBvcmFyeSkgKG5vIGNvcGllcywgYmVzdCk6IiA8PCBzdGQ6OmVuZGw7CiAgUyBzNSA9IGYzKERFTEFZKFMoKSkpOwp9
-
upload with new input
-
result: Success time: 0s memory: 2828 kB returned value: 0
Without delay: Copy Copy With delay: Copy Without delay pass by ref: Copy Without delay pass by ref (temporary) (should have 0 copies, will get 1): Copy With delay (temporary) (no copies, best):


