I have this C++ test code snippet,
#include
class A {
std::vector x;
public:
Anything that has a name is an lvalue reference. You have to use std::move on parameters to pass them on as rvalue references.
Quote from WIKI
For safety reasons, some restrictions are imposed. A named variable will never be considered to be an rvalue even if it is declared as such. To get an rvalue, the function template std::move() should be used. Rvalue references can also be modified only under certain circumstances, being intended to be used primarily with move constructors.