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.