LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Чтобы не использовать «продвинутые фишки», скоро придётся ставить какой-нибудь древний gcc 5 и компилировать им. Потому что фишки идут за тобой, хочешь ты этого или нет.

Эти учёные головы научили компилятор понимать алгоритмический смысл кода, чтобы он умел делать оптимизации. Но забыли про то, что человек оперирует прагматическим смыслом. И про то, что спецификация языка содержит UB, способные превратить алгоритмически понятный компилятору код в прагматически бессмысленный.

С точки зрения компилятора, он при обнаружении UB делает ровно то, что написано в спецификации: а именно, «что угодно, любой бред». Но человек ждёт от железки другого. Как минимум, диагностики ошибки, если она обнаружена.

Исходная версия wandrien, :

Чтобы не использовать «продвинутые фишки», скоро придётся ставить какой-нибудь древний gcc 5 и компилировать им. Потому что фишки идут за тобой, хочешь ты этого или нет.

Эти учёные головы научили компилятор понимать алгоритмический смысл кода, чтобы он умел делать оптимизации. Но забыли про то, что человек оперирует прагматическим смыслом. И про то, что спецификация языка содержит UB, способные превратить алгоритмически верный код в прагматически бессмысленный.

С точки зрения компилятора, он при обнаружении UB делает ровно то, что написано в спецификации: а именно, «что угодно, любой бред». Но человек ждёт от железки другого. Как минимум, диагностики ошибки, если она обнаружена.