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();
};
Обратные типы не являются ковариантными (и, следовательно, они не являются законными), но они были бы, если бы я использовал исходные указатели. Какая общепринятая идиома работает над этим, если есть одна?