Принят финальный проект для C++0x


Наконец-то свершилось!
Комитет по стандартизации C++ принял сегодня финальный Draft (проект, черновик) для C++0x, о чем в своем блоге поспешил сообщить Herb Sutter.
Теперь впереди финальные небольшие доработки и исправления, но кардинально меняться ничего уже не будет. А через год выйдет и совсем финальный вариант стандарта, который, как шутили многие, будет называться C++0xB.


Есть всего 2 изменения, которые просочились сегодня в стандарт:
1. Пометили, как “устаревшие” (deprecated) спецификации исключений, но зато добавили ключевое слово noexcept для случаев, когда функция не генерит вообще исключений. Понятно, зачем убрали спецификацию исключений - их все равно невозможно было нормально использовать. А новое ключевое слово можно будет использовать так: “void f() noexcept {…}”. Это может помочь компилятору сгенерить более оптимальный код в некоторых ситуациях.
2. Убрали экспортные шаблоны. Был всего 1 компилятор (EDG), который их поддерживал, да и то его разработчики сами просили убрать их из стандарта. Вот их и убрали для упрощения.


Все остальное осталось неизменным с последней публикации. Про основные фичи C++0x было уже написано много, так что не буду повторяться. Тем более, что любой уже может с ними поиграть в Visual Studio 2010 или в новом GCC.
А в этот четверг к нам приезжает с лекцией сам Страуструп - будет вдвойне интересно его послушать после этого!

10 комментариев к Принят финальный проект для C++0x

  • boobleccie

    noexcept все-равно юзать никто не будет, да и компилятор может в 99% случаев определить что исключений ф-я не выбрасывает.

    Ждем подробный отчет о приезде Самого :)

    • noexcept все-равно юзать никто не будет

      Я бы юзал, если бы компилятор умел предупреждать, что функция помечена, как noexcept, а она кидает что-то.
      А еще лучше - как в Java, чтобы для всех функций, которые кидают что-то, нельзя было вызвать их вне блока try, ловящего все возможные исключения. Но это мечта :)

  • egorinsk

    но зато добавили ключевое слово noexcept для случаев, когда функция не генерит вообще исключений

    Блин, лентяи, а неужели нельзя уже наконец-то компилятор сделать, который сам будет определять, кто какие исключения выкидывает, а то вот, бедные Явовцы вроде до сих пор руками прописывают throws. Каменный век, чесслово.

    • Дело не в лени, а в еще одной возможности проверить правильность на этапе компиляции. В той же Яве я считаю спецификация и проверка исключений - это болшой шаг вперед. Ибо программист думает всегда о том, что именно кидает функция. И пользователям функции проще - исключения видны в спецификации.
      А в C++ что? Смотришь на функцию и как понять что именно она может кинуть?

      • egorinsk

        > А в C++ что? Смотришь на функцию и как понять что именно она может кинуть?

        Ну я не столько против самого объявления, я против того, что надо руками его вписывать, один раз написал throw new Exception, и обязан потом во всех (!) функциях этот ексепшн вписывать, это рутинная и бесполезная работа (так же, как и описание заголовочных файлов, например).

        Пусть компилятор или IDE, или кто-нибудь еще сам определяет и пишет эти объявления.

        • >>Пусть компилятор или IDE, или кто-нибудь еще сам определяет и пишет эти объявления.

          Ну так как раз если это автоматически вписывается, то это теряет весь смысл для тебя, как разработчика. Смысл остается только для пользователей твоей функции - они будут видеть что и как. А ты-то не сможешь проконтролировать, что неправильное исключение бросил.

          • boobleccie

            Но пользователю достаточно дать только функции на экспорт, публичные, со списком исключений. В конце концов указать перечень кидаемых исключений в аннотациях к функции, а компилятор пусть проверит - правду ты написал или нет(например эта ф-я может выкинуть что-то не перечисленное).

            А во внутренних функциях, которые не видны пользователю - это просто больше работы по вбиванию текста, в то время как списки кидаемых исключений действительно компилятор может составить.

  • dDIMA

    А как с noexept будут бросаться стандартные исключения Windows? Или на них наконец-то решили забить?

    • Я так понял, что они не будут ничего проверять в компилере. Просто будут верить программеру.
      Страуструп сказал, что “это МОЖЕТ в будущем помочь компиляторам генерить код лучше”.

  • n0p

    Искренне надеюсь что новый стандарт похоронит С++ ;)
    Хотя мне уже почти всё равно ;)
    Мой выбор — языки с правильным дизайном.

Ответить

 

 

 

Вы можете использовать эти HTML тэги

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>