Chciałbym sprawdzić moje zrozumienie i wnioski w tej sprawie.Mam rację mówiąc, że const_cast, po którym następuje modyfikacja na const-to-const związanej z plikiem tymczasowym, jest w porządku?
Na IRC, pytano:
Czy dopuszczalne jest
const_cast
const
odniesienia, który jest zobowiązany do tymczasowego obiektu?
Tłumaczenie: ma const ref-to-związany tymczasowy, i chce wyrzucać jej const
-ness aby go zmodyfikować.
Moją odpowiedzią było to, że poprosiliśmy a similar question poprzednio, gdzie konsensus wydawało się, że nie są sami tymczasowych natury const
, a tym samym, że można zrzucić const
-ness z odniesieniem trzeba je i modyfikować przez wynik. I tak długo, jak ten pierwotny ref-to-const
nadal istnieje, nie wpłynie to na czas życia tymczasowego.
czyli:
int main()
{
const int& x = int(3);
int& y = const_cast<int&>(x);
y = 4;
cout << x;
}
// Output: 4
//^Legal and safe
mam rację?
(Oczywiście, czy taki kod jest rzeczywiście wskazane jest zupełnie inna sprawa!)
@ Mark: Oh, literał mógł być złym wyborem. Stwierdziłem, że nie jest to dosłowne na to pytanie. –
Już miałem powiedzieć, że nie było tymczasowych w tym kodzie. Na szczęście odświeżyłem stronę zanim to zrobiłem :) – Gorpik
afaik (ale nie mogę go znaleźć w stadnardzie) mówi coś w stylu "kiedy został zadeklarowany jako const, to możesz nie odrzucić constness" ... więc pytanie jest , jest literałem zadeklarowanym jako const? Nie sądzę, ponieważ powoduje to tymczasowy obiekt, więc jest zadeklarowany jako const? Nie mam pojęcia, ale moje odwagi mówią: no – PlasmaHH