C++模板协方差

C++ Template Covariance

本文关键字:方差 C++      更新时间:2023-10-16

您能在C++中(通过模板)使用泛型类型的协方差特性吗?

我已经找到了这个问题来回答我的问题,但我又问了一遍,因为已经两年了!在成瘾中,尽管有人解释说模板中的C++不可能有协方差,但对此没有任何解释!

你能帮我了解这个话题的新闻/解释吗?

将前面的问题作为澄清设备,您似乎在问为什么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
}