#include <iostream>
class A
{
public:
A() { std::cout << "regular constructor\n"; }
~A() { std::cout << "destructor\n"; }
A(A const&) { std::cout << "copy constructor\n"; }
};
class B
{
public:
B() : a_(A()) {}
B(A const& a) : a_(a) {}
private:
A a_;
};
int main()
{
B b;
// "-----------------------------"
A a;
B b1(a);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQQp7CnB1YmxpYzoKCUEoKSB7IHN0ZDo6Y291dCA8PCAicmVndWxhciBjb25zdHJ1Y3RvclxuIjsgfQoJfkEoKSB7IHN0ZDo6Y291dCA8PCAiZGVzdHJ1Y3RvclxuIjsgfQoJQShBIGNvbnN0JikgeyBzdGQ6OmNvdXQgPDwgImNvcHkgY29uc3RydWN0b3JcbiI7IH0KfTsKCmNsYXNzIEIKewpwdWJsaWM6CglCKCkgOiBhXyhBKCkpIHt9CglCKEEgY29uc3QmIGEpIDogYV8oYSkge30KcHJpdmF0ZToKCUEgYV87Cn07CgppbnQgbWFpbigpCnsKCUIgYjsKCS8vICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKCUEgYTsKCUIgYjEoYSk7CgoJcmV0dXJuIDA7Cn0K