#include <iostream>
struct Object
{
Object(int) { std::cout << "1\n"; }
Object(int, int, int) { std::cout << "3\n"; }
Object(const Object&) = delete;
Object& operator=(const Object&) = delete;
~Object() { std::cout << "kthxbye\n"; }
};
void foo(bool condition)
{
Object&& a = condition ? Object(1) : Object(2, 3, 4);
std::cout << "end of foo\n";
}
int main()
{
foo(true);
foo(false);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE9iamVjdAp7CiAgICBPYmplY3QoaW50KSB7IHN0ZDo6Y291dCA8PCAiMVxuIjsgfQogICAgT2JqZWN0KGludCwgaW50LCBpbnQpIHsgc3RkOjpjb3V0IDw8ICIzXG4iOyB9CiAgICBPYmplY3QoY29uc3QgT2JqZWN0JikgPSBkZWxldGU7CiAgICBPYmplY3QmIG9wZXJhdG9yPShjb25zdCBPYmplY3QmKSA9IGRlbGV0ZTsKICAgIH5PYmplY3QoKSB7IHN0ZDo6Y291dCA8PCAia3RoeGJ5ZVxuIjsgfQp9OwoKdm9pZCBmb28oYm9vbCBjb25kaXRpb24pCnsKICAgIE9iamVjdCYmIGEgPSBjb25kaXRpb24gPyBPYmplY3QoMSkgOiBPYmplY3QoMiwgMywgNCk7CiAgICBzdGQ6OmNvdXQgPDwgImVuZCBvZiBmb29cbiI7Cn0KCmludCBtYWluKCkKewogICAgZm9vKHRydWUpOwogICAgZm9vKGZhbHNlKTsKfQo=