#include <iostream>
struct Bar {
int n;
Bar( int v) : n( v) {
std:: cout << "Bar " << n << " constructed\n " ;
}
Bar& operator= ( const Bar& other) {
std:: cout << "Bar " << n << " assigned from " << other.n << "\n " ;
n = other.n ;
return * this ;
}
} ;
struct Foo
{
Bar a;
Bar b;
Foo( Bar c, Bar d) : a( b = c) , b( d) { }
} ;
int main( )
{
Foo f( Bar( 1 ) , Bar( 2 ) ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgQmFyIHsKICAgIGludCBuOwogICAgQmFyKGludCB2KSA6IG4odikgewogICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkJhciAiIDw8IG4gPDwgIiBjb25zdHJ1Y3RlZFxuIjsKICAgIH0KICAgIEJhciYgb3BlcmF0b3I9KGNvbnN0IEJhciYgb3RoZXIpIHsKICAgICAgICBzdGQ6OmNvdXQgPDwgIkJhciAiIDw8IG4gPDwgIiBhc3NpZ25lZCBmcm9tICIgPDwgb3RoZXIubiA8PCAiXG4iOwogICAgICAgIG4gPSBvdGhlci5uOwogICAgICAgIHJldHVybiAqdGhpczsKICAgIH0KfTsKc3RydWN0IEZvbwp7CiAgIEJhciBhOwogICBCYXIgYjsKCiAgIEZvbyhCYXIgYywgQmFyIGQpIDogYShiID0gYyksIGIoZCkgeyB9Cn07CgppbnQgbWFpbigpCnsKICAgICAgICBGb28gZihCYXIoMSksIEJhcigyKSk7Cn0K