#include <iostream>
using namespace std;
struct Test
{
float one;
float two;
float three;
Test() { cout << "default ctor" << endl; }
Test(const Test&) { cout << "copy ctor" << endl; }
Test(Test&&) { cout << "move ctor" << endl; }
~Test() { cout << "dtor" << endl; }
};
Test MakeTest(bool branch)
{
Test handleOne, handleTwo;
if (branch)
return handleOne;
return handleTwo;
}
int main() {
Test help = MakeTest(false);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFRlc3QKewoJZmxvYXQgb25lOwoJZmxvYXQgdHdvOwoJZmxvYXQgdGhyZWU7CgkKCVRlc3QoKSB7IGNvdXQgPDwgImRlZmF1bHQgY3RvciIgPDwgZW5kbDsgfQoJVGVzdChjb25zdCBUZXN0JikgeyBjb3V0IDw8ICJjb3B5IGN0b3IiIDw8IGVuZGw7IH0KCVRlc3QoVGVzdCYmKSB7IGNvdXQgPDwgIm1vdmUgY3RvciIgPDwgZW5kbDsgfQoJCgl+VGVzdCgpIHsgY291dCA8PCAiZHRvciIgPDwgZW5kbDsgfQp9OwoKVGVzdCBNYWtlVGVzdChib29sIGJyYW5jaCkKewoJVGVzdCBoYW5kbGVPbmUsIGhhbmRsZVR3bzsKCWlmIChicmFuY2gpCgkJcmV0dXJuIGhhbmRsZU9uZTsKCQoJcmV0dXJuIGhhbmRsZVR3bzsKfQoKaW50IG1haW4oKSB7CglUZXN0IGhlbHAgPSBNYWtlVGVzdChmYWxzZSk7CglyZXR1cm4gMDsKfQ==