BiorącCo oznacza przyjmowanie adresu referencyjnego wartości rvalue?
void foo(int&& x) {
std::cout << &x;
}
To działa, ale co to właściwie reprezentować adres? Czy jest tymczasowy int
utworzony po wywołaniu foo i co oznacza adres? Jeśli to prawda i jeśli napiszę int y = 5; foo(static_cast<int&&>(y));
, czy spowoduje to utworzenie innego tymczasowego, czy też kompilator inteligentnie odwoła się do y?
Nie musi być tymczasowy. Nic nie powstrzyma cię przed zrobieniem 'int x = 42; foo (x); ' –
FWIW, twoja obsada to po prostu' std :: move (y) '. – chris
@IgorTandetnik, To nie będzie się kompilować, ponieważ odwołania rvalue nie wiążą się z wartościami l. – chris