你能否在C ++中使用协方差适用于通用类型(通过模板)?
我已经找到this question来回答我的问题,但我再问一遍,因为它已经有两年了!另外,虽然有人解释说模板中的C ++中没有协方差,但对此没有任何解释!
您能帮助我了解有关此主题的新闻/解释吗?
答案 0 :(得分:4)
鉴于提及早期问题作为澄清设备,您似乎在问为什么T<Derived>
通常不会来自T<Base>
。
考虑T
= std::shared_ptr
。
您不希望能够这样做:
void foo( shared_ptr<Base>& p ) { p.reset( new Derived2 ); }
auto main() -> int
{
shared_ptr<Derived1> p;
foo( p ); // Oops, p now points to unrelated Derived2
}