I hope this isn't a silly question, I just wanted to make sure my understanding on this is clear.
If a parameter is received by RValue reference :
struct A { /* move and copy constructors here... */ };
template <class T> void f1(T&&) {
}
void demo()
{
f1(A());
f1(std::move<A>(A()));
}
It seems to me that it is passed by reference, and no move constructor is applied.
Is this true? I just wanted to make sure there is no copy elision or other optimization here.