#include <iostream>
struct A {
A() { std::cout << "A()" << std::endl; }
A(int) { std::cout << "A(int)" << std::endl; }
A(const A&) { std::cout << "A(const A&)" << std::endl; }
A& operator=(const A&) { std::cout << "A=()" << std::endl; return *this; }
~A() { std::cout << "~A()" << std::endl; }
};
struct B {
B() { std::cout << "B()" << std::endl; }
B(int) { std::cout << "B(int)" << std::endl; }
B(const B&) { std::cout << "B(const B&)" << std::endl; }
~B() { std::cout << "~B()" << std::endl; }
B& operator=(const B&) { std::cout << "B=()" << std::endl; return *this; }
};
struct C {
B b;
A a1;
A a2;
C() : a1(3){
b = 3;
a2 = 7;
}
};
int main(){
C c;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEEgewoJQSgpIHsgc3RkOjpjb3V0IDw8ICJBKCkiIDw8IHN0ZDo6ZW5kbDsgfQoJQShpbnQpIHsgc3RkOjpjb3V0IDw8ICJBKGludCkiIDw8IHN0ZDo6ZW5kbDsgfQoJQShjb25zdCBBJikgeyBzdGQ6OmNvdXQgPDwgIkEoY29uc3QgQSYpIiA8PCBzdGQ6OmVuZGw7IH0KCUEmIG9wZXJhdG9yPShjb25zdCBBJikgeyBzdGQ6OmNvdXQgPDwgIkE9KCkiIDw8IHN0ZDo6ZW5kbDsgcmV0dXJuICp0aGlzOyB9Cgl+QSgpIHsgc3RkOjpjb3V0IDw8ICJ+QSgpIiA8PCBzdGQ6OmVuZGw7IH0KfTsKCnN0cnVjdCBCIHsKCUIoKSB7IHN0ZDo6Y291dCA8PCAiQigpIiA8PCBzdGQ6OmVuZGw7IH0KCUIoaW50KSB7IHN0ZDo6Y291dCA8PCAiQihpbnQpIiA8PCBzdGQ6OmVuZGw7IH0KCUIoY29uc3QgQiYpIHsgc3RkOjpjb3V0IDw8ICJCKGNvbnN0IEImKSIgPDwgc3RkOjplbmRsOyB9Cgl+QigpIHsgc3RkOjpjb3V0IDw8ICJ+QigpIiA8PCBzdGQ6OmVuZGw7IH0KCUImIG9wZXJhdG9yPShjb25zdCBCJikgeyBzdGQ6OmNvdXQgPDwgIkI9KCkiIDw8IHN0ZDo6ZW5kbDsgcmV0dXJuICp0aGlzOyB9Cn07CgpzdHJ1Y3QgQyB7CglCIGI7CglBIGExOwoJQSBhMjsKCUMoKSA6IGExKDMpewoJCWIgPSAzOwoJCWEyID0gNzsKCX0KfTsKCmludCBtYWluKCl7CglDIGM7CglyZXR1cm4gMDsKfQ==