Tutaj link do godbolta: https://godbolt.org/z/sf3Y1E3WG
@wrazik no ale czej... to jest coś ze scopem, czy po prostu bug w kompilatorze?
@grappas nic z tych rzeczy, optymalizacja kompilatora z powodu UB. Pusta pętla w cpp to UB
Pusta pętla w cpp to UB
To zrozumiałe, ale co to zmienia w kwestii wyjścia poza main() i odpalenie sobie pierwszej z brzegu funkcji?
@grappas UB z założenia może spalić Ci chatę i zgwałcić żonę. Jakaś optymalizacja pewnie wkracza, niezrozumiała z kodu źródłowego ale mogąca mieć sens w jakiejś reprezentacji AST (albo jakiejś innej reprezentacji kompilatora)
@wrazik czyli ktoś kto tworzył standard: "chuj kurwa to nie ma sensu, ale jest semantycznie poprawnie, to tak to zategujemy"
@wrazik Pójdźmy o krok dalej ( ͡° ͜ʖ ͡°) :
@wrazik Pusta pętla w cpp to UB
Gdzie to jest zapisane?
@piotrb https://en.cppreference.com/w/cpp/language/for
"As part of the C++ forward progress guarantee, the behavior is undefined if a loop that has no observable behavior (does not make calls to I/O functions, access volatile objects, or perform atomic or synchronization operations) does not terminate. Compilers are permitted to remove such loops. "
@wrazik Tylko to jest bardzo kontrintuicyjne, wywołanie funkcji, która nigdzie nawet nie była wywoływana. Ja oczywiście jestem daleki od używania jakichkolwiek UB w kodzie, ale taka akcja to prawie jak meteoryt.
Zaloguj się aby komentować