#include <iostream>
using namespace std;
class sshow
{
public:
void show()
{
cout << this << endl;
}
};
class sameAdress : public sshow
{
public:
sameAdress( ) = default;
sameAdress( const sameAdress& )
{
cout << "Я не вывожусь, но влияю как-то, если меня закомментировать/разкоментировать ... .";
}
};
class diffAdress : public sshow
{
};
template <typename T>
T bar()
{
T local_foo; local_foo.show(); return local_foo;
}
int main()
{
sameAdress f = bar<sameAdress>( );
f.show();
diffAdress r = bar<diffAdress>( );
r.show();
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmNsYXNzIHNzaG93CnsKcHVibGljOiAKICAgIHZvaWQgc2hvdygpCiAgICB7CiAgICAgICAgY291dCA8PCB0aGlzIDw8IGVuZGw7CiAgICB9Cn07CmNsYXNzIHNhbWVBZHJlc3MgOiBwdWJsaWMgc3Nob3cKewpwdWJsaWM6CiAKICAgIHNhbWVBZHJlc3MoICkgPSBkZWZhdWx0OwogICAgc2FtZUFkcmVzcyggY29uc3Qgc2FtZUFkcmVzcyYgKQogICAgewogICAgICAgIGNvdXQgPDwgItCvINC90LUg0LLRi9Cy0L7QttGD0YHRjCwg0L3QviDQstC70LjRj9GOINC60LDQui3RgtC+LCDQtdGB0LvQuCDQvNC10L3RjyDQt9Cw0LrQvtC80LzQtdC90YLQuNGA0L7QstCw0YLRjC/RgNCw0LfQutC+0LzQtdC90YLQuNGA0L7QstCw0YLRjCAuLi4gLiI7CiAgICB9ICAgCn07CmNsYXNzIGRpZmZBZHJlc3MgOiBwdWJsaWMgc3Nob3cKewogCn07CiAKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ClQgYmFyKCkKewogICAgVCBsb2NhbF9mb287IGxvY2FsX2Zvby5zaG93KCk7IHJldHVybiBsb2NhbF9mb287Cn0KIAppbnQgbWFpbigpCnsKICAgIHNhbWVBZHJlc3MgZiA9IGJhcjxzYW1lQWRyZXNzPiggKTsKICAgIGYuc2hvdygpOwogCiAKICAgIGRpZmZBZHJlc3MgciA9IGJhcjxkaWZmQWRyZXNzPiggKTsKICAgIHIuc2hvdygpOwp9