#include <iostream>
using namespace std;
struct some_type {};
void doSomething(some_type& model)
{
cout << "reference: " << &model << endl;
}
void test(some_type input_model, bool do_copy)
{
cout << "original: " << &input_model << endl;
if (do_copy)
{
some_type copy_model = input_model;
doSomething(copy_model);
}
else
doSomething(input_model);
}
int main()
{
test({}, true);
test({}, false);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHNvbWVfdHlwZSB7fTsKCnZvaWQgZG9Tb21ldGhpbmcoc29tZV90eXBlJiBtb2RlbCkKewoJY291dCA8PCAicmVmZXJlbmNlOiAiIDw8ICZtb2RlbCA8PCBlbmRsOwp9Cgp2b2lkIHRlc3Qoc29tZV90eXBlIGlucHV0X21vZGVsLCBib29sIGRvX2NvcHkpCnsKCWNvdXQgPDwgIm9yaWdpbmFsOiAiIDw8ICZpbnB1dF9tb2RlbCA8PCBlbmRsOwoJaWYgKGRvX2NvcHkpCgl7CgkJIHNvbWVfdHlwZSBjb3B5X21vZGVsID0gaW5wdXRfbW9kZWw7CgkJIGRvU29tZXRoaW5nKGNvcHlfbW9kZWwpOwoJfQoJZWxzZQoJCWRvU29tZXRoaW5nKGlucHV0X21vZGVsKTsKfQoKaW50IG1haW4oKQp7Cgl0ZXN0KHt9LCB0cnVlKTsKCXRlc3Qoe30sIGZhbHNlKTsKCXJldHVybiAwOwp9