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 | #include <stdio.h> #include <string.h> #include <functional> class Simple { public: Simple( int value ) { puts( "Constructing simple!" ); this->value = value; } Simple( const Simple& rhs ) { puts( "Copying simple!" ); this->value = rhs.value; } Simple( Simple&& rhs ) { puts( "Moving simple!" ); this->value = rhs.value; } ~Simple() { puts( "Destroying simple!" ); } int Get() const { return this->value; } private: int value; }; int main() { Simple test( 5 ); std::function<int ()> f = [test] () { return test.Get(); }; printf( "%d\n", f() ); } |
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CgpjbGFzcyBTaW1wbGUgewpwdWJsaWM6CiAgICBTaW1wbGUoIGludCB2YWx1ZSApIHsgcHV0cyggIkNvbnN0cnVjdGluZyBzaW1wbGUhIiApOyB0aGlzLT52YWx1ZSA9IHZhbHVlOyB9CiAgICBTaW1wbGUoIGNvbnN0IFNpbXBsZSYgcmhzICkgeyBwdXRzKCAiQ29weWluZyBzaW1wbGUhIiApOyB0aGlzLT52YWx1ZSA9IHJocy52YWx1ZTsgfQogICAgU2ltcGxlKCBTaW1wbGUmJiByaHMgKSB7IHB1dHMoICJNb3Zpbmcgc2ltcGxlISIgKTsgdGhpcy0+dmFsdWUgPSByaHMudmFsdWU7IH0KICAgIH5TaW1wbGUoKSB7IHB1dHMoICJEZXN0cm95aW5nIHNpbXBsZSEiICk7IH0KICAgIGludCBHZXQoKSBjb25zdCB7IHJldHVybiB0aGlzLT52YWx1ZTsgfQoKcHJpdmF0ZToKICAgIGludCB2YWx1ZTsKfTsKCmludCBtYWluKCkKewogICAgU2ltcGxlIHRlc3QoIDUgKTsKCiAgICBzdGQ6OmZ1bmN0aW9uPGludCAoKT4gZiA9CiAgICAgICAgW3Rlc3RdICgpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gdGVzdC5HZXQoKTsKICAgICAgICB9OwoKICAgIHByaW50ZiggIiVkXG4iLCBmKCkgKTsKfQ==
-
upload with new input
-
result: Success time: 0s memory: 2960 kB returned value: 0
Constructing simple! Copying simple! Moving simple! Destroying simple! 5 Destroying simple! Destroying simple!


