LINUX.ORG.RU

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

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

Слово const только место в коде занимает. Если вы не хотите менять переменную, то просто не будете её менять. {41}

@byko3y triggered

Мой основной посыл был про то, что const в C++ не дает фактических гарантий константности, про замену const на constexpr, и допустимость ограниченного применения «const T&», но только при невозврате связанной константной ссылки. Но никак не просто «не используйте const». Все остальыне проявления const ничего не дают или постепенно приводит к нагромождение дублей, которые можно потерпеть разве что в сторонних либах для реализации каких-нибудь итераторов — хотя и тераторы на самом деле являются ублюдочным подобием сишного

for (char *it = p; it < end; ++it)
которое глубоко паталогично в зародыше, и потому что код под капотом прохода по какому-нибудь связанному списку совершенно неочевиден (в том числе компилятору, который не заоптимизирует нетривиальную реализацию), и потому что дает разгулье для UB. Особенно смешно на этом фоне слышать про то, что константные итераторы дают какие-то там «гарантии» — ага, если сможешь избежать чтения высвобожденной области памяти, то считай что вот тебе гаранатии обеспечены.

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

Слово const только место в коде занимает. Если вы не хотите менять переменную, то просто не будете её менять. {41}

@byko3y triggered

Мой основной посыл был про то, что const в C++ не дает фактических гарантий константности, про замену const на constexpr, и допустимость ограниченного применения «const T&», но только при невозврате связанной константной ссылки. Всё остальное ничего не дает или постепенно приводит к нагромождение дублей, которые можно потерпеть разве что в сторонних либах для реализации каких-нибудь итераторов — хотя и тераторы на самом деле являются ублюдочным подобием сишного

for (char *it = p; it < end; ++it)
которое глубоко паталогично в зародыше, и потому что код под капотом прохода по какому-нибудь связанному списку совершенно неочевиден (в том числе компилятору, который не заоптимизирует нетривиальную реализацию), и потому что дает разгулье для UB. Особенно смешно на этом фоне слышать про то, что константные итераторы дают какие-то там «гарантии» — ага, если сможешь избежать чтения высвобожденной области памяти, то считай что вот тебе гаранатии обеспечены.