我不确定以下代码的工作原理(VC ++ 2013):
void Foo(std::vector<int> &v) { }
主要:
std::vector<int> v;
Foo(std::move(v));
因为没有定义的Foo采用rvalue参数或const左值引用,所以我觉得上面的代码无法编译。发生了什么事?
谢谢
答案 0 :(得分:0)
该代码无效。它必须在任何符合标准的编译器下严重破坏。您正在尝试从右值初始化对左值的非const引用。不,不行。
值得注意的是,GCC和Clang都拒绝接受。