using namespace boost;
class A {};
class B : public A {};
class X {
virtual shared_ptr<A> foo();
};
class Y : public X {
virtual shared_ptr<B> foo();
};
Типы возвращаемых значений не ковариантны (и, следовательно, не являются законными), но они были бы, если бы вместо этого я использовал необработанные указатели. Какая общепринятая идиома помогает обойти это, если таковая существует?