在clang的C++ 11状态页面中遇到了一个名为"rvalue reference for*this"的提案.
我已经阅读了很多关于rvalue引用并理解它们的内容,但我认为我不知道这一点.我也无法使用这些条款在网上找到太多资源.
页面上的提案文件有一个链接:N2439(将移动语义扩展到*this),但我也没有从中获得太多的例子.
这个功能是什么?
当我尝试执行此操作时出现编译错误:
class A
{
virtual std::vector<A*> test() { /* do something */ };
}
class B: public A
{
virtual std::vector<B*> test() { /* do something */ };
}
Run Code Online (Sandbox Code Playgroud)
我假设 A 和 B 是协变类型,因此 A* 和 B* 也应该是(正确的?)通过推断,我本来期望 和 也std::vector<A*>应该std::vector<B*>是协变的,但情况似乎并非如此。为什么?