Following is the simplistic code of my problem,
void overloaded (int&& x) {
cout << "[rvalue]";
}
template <class T>
void fn (T&& x) {
overloaded(x);
}
int main() {
fn(0);
return 0;
}
I got a compile error
cannot bind ‘
int
’ lvalue to ‘int&&
’overloaded(x);
I am confused here, x
is passed as a rvalue reference into fn()
. But why the overload()
call in fn()
complains x
is a lvalue?
Aucun commentaire:
Enregistrer un commentaire