将RVALUE参数传递给非const lvalue参考的参数



我不确定为什么以下代码有效(VC 2013):

void Foo(std::vector<int> &v) { }

主要:

std::vector<int> v;
Foo(std::move(v));

由于没有定义的foo定义,它采用了rvalue参数或const lvalue参考i在印象下,上述代码将无法编译。发生了什么?

谢谢

该代码无法正常工作。在任何标准配合的编译器下,它都必须糟糕透顶。您正在尝试初始化对lvalue的非范围引用。不,不起作用。

应该注意的是GCC和Clang拒绝它。

最新更新