Wpis z mikrobloga

@TheMoonTheMoon: A dobra, masz rację stringi to lvalue, bo są to dane tablicowe. Twój napis po prostu został potraktowany przez kompilator jako tablica i jak sobie skompilujesz kod do asemblera i wyszukasz tego stringa to gdziś on tam powinien być zdefiniowany
@TheMoonTheMoon:

std::cout << static_cast("tekst");
Aaaa teraz widzę że chodzi Ci o literał liczbowy xDDD Imo adresy mają tylko obiekty a nie każdy literał nim będzie, może zostać zooptymalizowany przez kompilator.

EDIT: Więc o ile literał będzie istniał jako argument do instukcji w kodzie wynikowym więc praktycznie też będzie miał swój adres w binarce, to nie isnieje jako obiekt w rozumieniu c++ i nie możesz np dostać na niego wskaźnika.
@Passer93: Że da się wyciągnąć adres przez napisanie funkcji, która zwraca adres, a przyjmuje referencje do r-value, ale to bez sensu, bo zwróci jakiś adres, ale najprawdopodobniej będzie to tylko jakiś chwilowy przydzielony na czas użycia wewnątrz funkcji, bo gdyby to był "prawdziwy" adres, to wartości 66 dało by się przypisać coś innego.
@fransua: Tylko że jeśli bindujesz r-value referencje do literału czyli prvalue, to wtedy następuje temporary materialization (nie wiem jak to po polsku jest xD) i adres który dostaniesz będzie jak mówisz do tego tymczasowego obiektu a nie do literału, bo literał sam w sobie nie jest obiektem w rozumieniu c++ więc nie ma adresu.

Tutaj jest to opisane: https://en.cppreference.com/w/cpp/language/implicit_conversion pod "temporary materialization"