#include <iostream>
struct MyStruct
{
int val = 117;
MyStruct() = default;
explicit MyStruct( int v ) : val( v )
{
}
~MyStruct()
{
std::cout << "~MyStruct " << val << std::endl;
}
int* value()
{
return &val;
}
MyStruct add( int v )
{
return MyStruct( val + v );
}
};
void func( int* val )
{
std::cout << "value: " << *val << std::endl;
std::cout << "~func()" << std::endl;
}
int main()
{
func( MyStruct().add( 5 ).value() );
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE15U3RydWN0CnsKCWludCB2YWwgPSAxMTc7CgkKICAgIE15U3RydWN0KCkgPSBkZWZhdWx0OwoKCWV4cGxpY2l0IE15U3RydWN0KCBpbnQgdiApIDogdmFsKCB2ICApCgl7Cgl9CgkKCX5NeVN0cnVjdCgpCgl7CgkJc3RkOjpjb3V0IDw8ICJ+TXlTdHJ1Y3QgIiA8PCB2YWwgPDwgc3RkOjplbmRsOwoJfQoKCWludCogdmFsdWUoKQoJewoJICAgcmV0dXJuICZ2YWw7Cgl9CgkKCU15U3RydWN0IGFkZCggaW50IHYgKQoJewoJCXJldHVybiBNeVN0cnVjdCggdmFsICsgdiApOwoJfQp9OwoKdm9pZCBmdW5jKCBpbnQqIHZhbCApCnsKCXN0ZDo6Y291dCA8PCAidmFsdWU6ICIgPDwgKnZhbCA8PCBzdGQ6OmVuZGw7CglzdGQ6OmNvdXQgPDwgIn5mdW5jKCkiIDw8IHN0ZDo6ZW5kbDsKfQoKaW50IG1haW4oKQp7CglmdW5jKCBNeVN0cnVjdCgpLmFkZCggNSApLnZhbHVlKCkgKTsKfQ==