Я не люблю темы, где разработчики делают вид, что «и так понятно», а потом месяцами ловят UB в проде. Алиасинг памяти в C++ — как раз из таких.
Формально это про доступ к одному и тому же участку памяти через разные типы и указатели. Практически — про то, как компилятор получает право переписать ваш код так, что логика «очевидно же работает» внезапно ломается. И да, это не баг компилятора. Это цена за производительность и старый компромисс языка.
Сейчас ситуация такая: правила сложные, исключения сложные, объяснения еще сложнее. Поэтому в C++ до сих пор живут два лагеря: одни верят в строгую модель, другие — в магию и удачу. Опасная стратегия. ⚠️
Мой вывод простой: если код завязан на алиасинг «по наитию», это не инженерия, а ставка против стандарта. В спорных местах нужно не гадать, а либо менять дизайн, либо жестко изолировать доступ к памяти.
Будущее тут тоже без романтики: комитет пытается чинить не симптом, а саму модель. Но пока это не сделано, правило одно — не заставляйте компилятор угадывать ваши намерения.
Crisis Room
@CrisisRoomPro
Я не люблю темы, где разработчики делают вид, что «и так понятно», а потом месяцами ловят UB в проде. Алиасинг
Этот пост опубликован в Telegram-канале Crisis Room. Подписаться можно по ссылке: @CrisisRoomPro.