#cpp #cpp11 #cpp14 #cpp17
Сразу же оговорюсь: я уважаю стандарт :) "Закон есть закон" (с) Фердинанд Пасторелли Тем не менее - насколько это серьезно в реальной жизни? Хочется посмотреть на конкретные примеры, где нарушение strict aliasing реально приводит к неприятностям, причем желательно не запутанные примеры с передачей трех разных указателей на одно и то же место в памяти в одну функцию, а что-то типа обнуления массива char через long long? Еще раз прошу не подозревать в том, что я хочу получить ответ и на его основании наехать на стандарт :)
Ответы
Ответ 1
Вот пример: char const * test(char const * p_data) { reinterpret_cast< int const * & >(p_data) += 1; // пропускаем 4 байта return(p_data); } -O3 mov rax, rdi ret -O3 -fno-strict-aliasing lea rax, [rdi+4] ret Online compiler
Комментариев нет:
Отправить комментарий