#include <iostream>
using std::cout;
using std::cin;
using std::endl;
struct CL
{
CL(){cout<<"ctor"<<endl;}
CL(const CL&){cout<<"copy ctor"<<endl;}
~CL(){cout<<"dtor"<<endl;}
void f() const{cout<<"const f"<<endl;}
void f(){cout<<"f"<<endl;}
};
CL fnc()
{
return CL(); //1. Конструктор по умолчанию
}
int main()
{
const CL& ref=fnc(); //2. Конструктор копирования (т.к. return по значению)
//3. Т.к. fnc() - временный, создается копия для ссылки
ref.f();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBzdGQ6OmNvdXQ7CnVzaW5nIHN0ZDo6Y2luOwp1c2luZyBzdGQ6OmVuZGw7CgpzdHJ1Y3QgQ0wKewoJQ0woKXtjb3V0PDwiY3RvciI8PGVuZGw7fQoJQ0woY29uc3QgQ0wmKXtjb3V0PDwiY29weSBjdG9yIjw8ZW5kbDt9Cgl+Q0woKXtjb3V0PDwiZHRvciI8PGVuZGw7fQoJdm9pZCBmKCkgY29uc3R7Y291dDw8ImNvbnN0IGYiPDxlbmRsO30KCXZvaWQgZigpe2NvdXQ8PCJmIjw8ZW5kbDt9Cn07CgpDTCBmbmMoKQp7CglyZXR1cm4gQ0woKTsgLy8xLiDQmtC+0L3RgdGC0YDRg9C60YLQvtGAINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOCn0KCmludCBtYWluKCkKewoJY29uc3QgQ0wmIHJlZj1mbmMoKTsgIC8vMi4g0JrQvtC90YHRgtGA0YPQutGC0L7RgCDQutC+0L/QuNGA0L7QstCw0L3QuNGPICjRgi7Qui4gcmV0dXJuINC/0L4g0LfQvdCw0YfQtdC90LjRjikKCQkJCQkJICAvLzMuINCiLtC6LiBmbmMoKSAtINCy0YDQtdC80LXQvdC90YvQuSwg0YHQvtC30LTQsNC10YLRgdGPINC60L7Qv9C40Y8g0LTQu9GPINGB0YHRi9C70LrQuAoJcmVmLmYoKTsKfQ==