Вижу, спасибо. Однако, замечу, что: 1. Речь не идёт про отмену. Они объявляются deprecated, т.е. будут функциональны ещё минимум 1 следующий стандарт. 2. Насколько я помню, изменения стандарта С++ не имеют отношения к стандарту С. 3. Ембеддед-компиляторы не сильно спешат за поддержкой новых стандартов и зачастую имеют свои расширения. Я к тому, что говорить про "игнорирование volatile" в новых компиляторах, имхо, преждевременно

Комментарии: 13

  1. 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

                    Там выше прям были пункты из стандарта где оно может быть проигнорировано

Не нашли ответ?

Вам также может быть интересно