//
// What is it about ?
//
#include <iostream>
#include <string>
#include <memory>
#include <vector>
using namespace std;
struct A {
A() : i(std::make_shared<std::vector<std::shared_ptr<int>>>()) {}
A(const A &other) {
i = other.i;
}
std::shared_ptr<std::vector<std::shared_ptr<int>>> i;
};
struct B : public A {
B(const A &other) : A(other) {}
};
int main(int ac, char**av)
{
cout << "...\n";
{ // throw
A a;
B b(a);
b.i->emplace_back(std::make_shared<int>(10));
printf("%d\n", *a.i->at(0));
}
//cin.ignore(SIZE_MAX, '\n');
cout << "Press Enter";
cin.get();
return 0;
}
Ly8KLy8gV2hhdCBpcyBpdCBhYm91dCA/ICAKLy8KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7IApzdHJ1Y3QgQSB7CglBKCkgOiBpKHN0ZDo6bWFrZV9zaGFyZWQ8c3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPGludD4+PigpKSB7fQoKCUEoY29uc3QgQSAmb3RoZXIpIHsKCQlpID0gb3RoZXIuaTsKCX0KCglzdGQ6OnNoYXJlZF9wdHI8c3RkOjp2ZWN0b3I8c3RkOjpzaGFyZWRfcHRyPGludD4+PiBpOwp9OwoKc3RydWN0IEIgOiBwdWJsaWMgQSB7CglCKGNvbnN0IEEgJm90aGVyKSA6IEEob3RoZXIpIHt9Cn07CgppbnQgbWFpbihpbnQgYWMsIGNoYXIqKmF2KSAKewoJY291dCA8PCAiLi4uXG4iOyAKCgl7IC8vIHRocm93CgkJQSBhOwoJCUIgYihhKTsKCgkJYi5pLT5lbXBsYWNlX2JhY2soc3RkOjptYWtlX3NoYXJlZDxpbnQ+KDEwKSk7CgkJcHJpbnRmKCIlZFxuIiwgKmEuaS0+YXQoMCkpOwoJfQoKCgkvL2Npbi5pZ25vcmUoU0laRV9NQVgsICdcbicpOwoJY291dCA8PCAiUHJlc3MgRW50ZXIiOwoJY2luLmdldCgpOyAKCXJldHVybiAwOwp9