将rvalue参数传递给非const左值引用的参数

时间:2014-03-05 21:10:25

标签: c++ move-semantics

我不确定以下代码的工作原理(VC ++ 2013):

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

主要:

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

因为没有定义的Foo采用rvalue参数或const左值引用,所以我觉得上面的代码无法编译。发生了什么事?

谢谢

1 个答案:

答案 0 :(得分:0)

该代码无效。它必须在任何符合标准的编译器下严重破坏。您正在尝试从右值初始化对左值的非const引用。不,不行。

值得注意的是,GCC和Clang都拒绝接受。