简体   繁体   中英

Passing rvalue argument to parameter of non-const lvalue reference

I'm unsure why the following code works (VC++ 2013):

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

In main:

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

Because there is no Foo defined which takes an rvalue parameter or a const lvalue reference I was under the impression the above code would fail to compile. What is going on?

Thank you

That code cannot work . It must horribly break under any standard-conforming compiler. You're trying to initialize a non-const reference to an lvalue from an rvalue. Nope, won't work.

It is to be noted that both GCC and Clang reject it.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM