#include <iostream>
#include <memory>
using namespace std;
class A {
public:
A() {
cout << "Default constructor" << endl;
}
A( const A& a ) {
cout << "Copy constructor" << endl;
}
~A() {}
};
void foo( std::shared_ptr< A > a )
{
auto b = a;
}
int main() {
foo( std::shared_ptr< A >( new A() ) );
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWVtb3J5PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEEgewpwdWJsaWM6CglBKCkgewoJCWNvdXQgPDwgIkRlZmF1bHQgY29uc3RydWN0b3IiIDw8IGVuZGw7Cgl9CgkKCUEoIGNvbnN0IEEmIGEgKSB7CgkJY291dCA8PCAiQ29weSBjb25zdHJ1Y3RvciIgPDwgZW5kbDsKCX0KCQoJfkEoKSB7fQp9OwoKdm9pZCBmb28oIHN0ZDo6c2hhcmVkX3B0cjwgQSA+IGEgKQp7CglhdXRvIGIgPSBhOwp9CgppbnQgbWFpbigpIHsKCQoJZm9vKCBzdGQ6OnNoYXJlZF9wdHI8IEEgPiggbmV3IEEoKSApICk7CgkKCXJldHVybiAwOwp9