W C++ 03 można użyć sztuczki const&
(lub "najważniejszej stałej"), aby wydłużyć czas życia tymczasowego do końca okresu odniesienia. Moje pytanie brzmi, w C++ 0x, czy to zachowanie rozszerza się na odniesienia rvalue? Np. auto&& x = someFunction();
Najważniejsze odniesienia do wartości stałych i wartości
Odpowiedz
Zgodnie z [class.temporary]
, jeśli kompiluje się, to tak, przedłużono okres użytkowania tymczasowego.
Nie ma wyraźnej wzmianki o odwołaniach do wartości rvalue, choć przypuszczam, że jest to związane z terminem "referencje". Jednak sprawia mi to kłopot. –
Zobacz §8.3.2/2: Typ referencyjny zadeklarowany za pomocą & jest nazywany referencją lwartości, a typ odniesienia, który jest zadeklarowany jako , za pomocą && jest nazywany referencją rvalue. (...) Z wyjątkiem , gdzie wyraźnie zaznaczono, są one semantycznie równoważne i powszechnie nazywane referencjami. – Vitus
To kompiluje doskonale na VC10 SP1:
int && Get()
{
return 10;
}
const auto&& y=Get();
- 1. kątowa + najważniejsze: Wybrane wartości
- 2. Różnica między zwracaniem odniesienia do wartości stałej a wartością odniesienia
- 3. Kopiowanie odniesienia do wskaźnika lub według wartości
- 4. Wyjaśnienie wyjściowych danych wyjściowych po pomnożeniu 2 stałych wartości stałych
- 5. Czy poprawne jest wiązanie nie-stałych wartości l-odniesień do wartości r w C++ 11? (Zmodyfikowane)
- 6. Java: tworzenie wartości odniesienia o wartości null po zamknięciu strumienia
- 7. Dostęp do wartości stałych z szablonu Apache Velocity?
- 8. RCPP przechodzą przez vs. odniesienia o wartości
- 9. coffeescript i wartości wyliczeniowe
- 10. Dlaczego biblioteki Java używają wartości stałych większych niż wyliczenia?
- 11. semantyka zwrotnego typu odniesienia wartości r?
- 12. Przejmij własność parametru według wartości r-odniesienia
- 13. C++, odniesienia wartości r w parametrach funkcji
- 14. Definiowanie ograniczenia typu ogólnego interfejsu dla wartości i typów odniesienia
- 15. C# == różni się w typach wartości i typach odniesienia?
- 16. Czy metoda ogólna może obsługiwać zarówno typy wartości odniesienia, jak i wartości zerowalnej?
- 17. dlaczego std :: make_pair pobiera dane wejściowe według wartości zamiast odniesienia do wartości stałej?
- 18. Używanie stałych jako domyślnych wartości funkcji w PHP
- 19. Przechowywanie wartości całkowitych jako stałych w sposobie wyliczania w java
- 20. Konwersja właściwości i wartości obiektu do tablicy par wartości klucza
- 21. Najlepszy sposób na przesłonięcie wartości/stałych modułu w kątowym JS
- 22. var lub ref/atom/agent dla stałych wartości?
- 23. Jak przekonwertować ciąg do wartości wyliczeniowej, gdy typ odniesienia enum jest klasą <?>?
- 24. Wartość odniesienia wartości RV: Dlaczego wartości rvalue nie są domyślnie przenoszone?
- 25. "<-" i wartości związanych
- 26. Jak uzyskać typy i wartości tablicy const?
- 27. Czy obiekt jest typem odniesienia lub typem wartości?
- 28. IBInspektywne i zmiennoprzecinkowe wartości
- 29. wartości przejściu do onclick
- 30. Przekazywanie wartości do IValueConverter
Dlaczego potrzebne? "const auto &" wykonuje dokładnie to samo zadanie. – RedX
Można zmodyfikować tymczasowy. –
W rzeczywistości, jeśli spojrzeć na konstruktorów ruchu, to właśnie te, które robią. Wiążą się z wartością i modyfikują ją. – RedX