Carefully reading the references, A move constructor can only be called by a Xvalue. Then, how something like...
std::vector<Class> vec
vec.push_back(Class(..args..))
is possible without moving(casting) it to an Xvalue? Is there a specific way to use move semantics on PRvalues?