В следующем примере что-то ускользает от меня. Почему при генерации shared_from_this генерируется обычное исключение weak_ptr, если имеется неоплаченная ссылка shared_ptr на объект, который его вызывает?
class A : std::enable_shared_from_this<A> {
public:
static std::shared_ptr<A> create() {
return std::shared_ptr<A>(new A());
}
A() {}
void setParent(const std::shared_ptr<A>& other) {}
std::shared_ptr<A> keep() {
auto o = A::create();
o->setParent(shared_from_this());
return o;
}
};
int main() {
std::shared_ptr<A> a = A::create();
auto s = a->keep();
}