你能否在C++中使用通用类型(通过模板)的协方差特性?
我已经找到了这个问题的答案(链接),但是我再次提问是因为已经过去两年了!此外,虽然解释了在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
}