Вижу, спасибо. Однако, замечу, что: 1. Речь не идёт про отмену. Они объявляются deprecated, т.е. будут функциональны ещё минимум 1 следующий стандарт. 2. Насколько я помню, изменения стандарта С++ не имеют отношения к стандарту С. 3. Ембеддед-компиляторы не сильно спешат за поддержкой новых стандартов и зачастую имеют свои расширения. Я к тому, что говорить про "игнорирование volatile" в новых компиляторах, имхо, преждевременно
Комментарии: 13
Boris
1. Они депрекейтед потому, что компилятор их может игнорировать. 2. В плане базовых вещей они синхронизированы. 3. Кейл это шланг бейсд компилятор
Mark
1. Deprecated в плюсах часто означает "не рекомендовано больше юзать", поскольку они достаточно требовательны к обратной совместимости. 2. Не соглашусь. Structured bindings из С11 стали легальны только в C++2a. 3. Я имел ввиду ИАР. Надо было уточнить сразу, да
Boris
1. Нет больше никакой обратной совместимости для всего есть минимальное ядро которое совместимо с предыдущим стандартом. 2. Это сахар а не примитивные операции. В этом языки очень сильно могут отличатся. 3. На счёт иара надо смотреть его спеку как оно поддерживает эти нововведения
Mark
По первому пункту пройдусь отдельно. Начиная с введения move-семантики, появилось правило для автогенерации членов-функций, гласящее, что, если в классе определен пользовательский деструктор, то компилятор не генерирует мув-конструктор и оператор перемещающего присваивания. В то же время аналогичная генерация копирующего конструктора и копирующего присваивания разрешена, но объявлена депрекейтед. Уже 20й стандарт на носу, а оно все ещё работает, хоть и депрекейтед. Уважаемый, Вы только что сказали, что один из самых замороченных на обратной совместимости языков решил на нее забить - это очень, очень смелое заявление
Boris
Да это очень смелое решение, более того про это можно почитать в конце любого стандарта. И они не решили на неё забить, не нужно перегибать палку - простро теперь эта область совместимости стала несколько уже
Mark
Ну так а я о чем? Ваше первоначальное высказывание звучало как "volatile игнорируется", потом выяснили, что нет, не игнорируется, только объявлено депрекейтед. А народ в сообщениях выше уже паниковать начал.
Boris
Оно игнорируется для ряда случаев давно, просто сейчас это решили сделать более явно
Mark
Таки Вы ответьте, игнорируется == депрекейтед?
Boris
Да, потому что использование этого не возымеет должного эффекта хоть и не запрещается как невалидная конструкция Это как в случае register
Mark
Если я правильно помню, то его объявили депрекейтед в с++11, а убрали в с++17
Boris
Да, а потерял он смысл уже в 03
Fedor
Можно пример?
Boris
Там выше прям были пункты из стандарта где оно может быть проигнорировано