#include <iostream>
struct Widget
{
Widget(std::string const& n) : name_(n){}
~Widget()
{
std::cout << "dtor: " << name_ << std::endl;
}
std::string name_;
};
//Widget a("A");
//Widget b("B");
struct Base
{
Base(std::string const&n) : b(n){}
Widget b;
};
struct Derived : public Base
{
Derived(std::string const& na, std::string const& nb) : Base(nb), a(na)
{}
Widget a;
};
Derived all("A", "B");
Widget& a = all.a;
Widget& b = all.b;
int main() {
// your code goes here
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgV2lkZ2V0CnsKCVdpZGdldChzdGQ6OnN0cmluZyBjb25zdCYgbikgOiBuYW1lXyhuKXt9Cgl+V2lkZ2V0KCkKCXsKCQlzdGQ6OmNvdXQgPDwgImR0b3I6ICIgPDwgbmFtZV8gPDwgc3RkOjplbmRsOwoJfQoJc3RkOjpzdHJpbmcgbmFtZV87Cn07CgovL1dpZGdldCBhKCJBIik7Ci8vV2lkZ2V0IGIoIkIiKTsKc3RydWN0IEJhc2UKewogIEJhc2Uoc3RkOjpzdHJpbmcgY29uc3QmbikgOiBiKG4pe30KICBXaWRnZXQgYjsJCn07CgpzdHJ1Y3QgRGVyaXZlZCA6IHB1YmxpYyBCYXNlCnsKICBEZXJpdmVkKHN0ZDo6c3RyaW5nIGNvbnN0JiBuYSwgc3RkOjpzdHJpbmcgY29uc3QmIG5iKSA6IEJhc2UobmIpLCBhKG5hKQogIHt9CiAgV2lkZ2V0IGE7CQp9OwoKRGVyaXZlZCBhbGwoIkEiLCAiQiIpOwpXaWRnZXQmIGEgPSBhbGwuYTsKV2lkZ2V0JiBiID0gYWxsLmI7CgoKCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=