MyTetra Share
Делитесь знаниями!
Члены комитета по стандартизации ISO/IEC C++ выступили с критикой нового стандарта языка C++17
Время создания: 03.12.2016 17:55
Текстовые метки: c++, c++17, c++!!, новость, linux.org.ru
Раздел: Юмор
Запись: xintrea/mytetra_syncro/master/base/1480776952em7xrq1vsl/text.html на raw.github.com

Комитет по стандартизации языка C++, проводивший очередное заседание рабочей группы ISO C++ 5 марта 2016 (г. Джэксонвилл), утвердил список мажорного релиза C++17, подвергшийся широкой критике профессионального сообщества. В список вошли изменения P0263r1, P0188R1, P0189R1, P0212R1, P0170R1, p0018r3, P0138R2, p0245r1, p0143r2, p0165r1, P0024R2, P0226R1, p0220r1, P0218r1, p0005r4, P0152R1, p0185r1, P0253R1, P0154R1, P0304R0, P0272R1, P0077R2, P0206R1, p0221r1, P0141R0, PO4116 (https://isocpp.org/files/papers), которые, по заявлениям международных экспертов, направляют разработку стандарта C++17 в русло застойных решений.

Инициативная группа комитета, не согласная с принятым перечнем, объявила о разработке нового референсного стандарта C++!!, выпускаемого в пику ISO стандарта, призванного ежегодно добавлять действительно необходимые изменения языка. У нового стандарта отсутсвует нумерация версий, так как он привязан к актуальному ISO-стандарту и создан для того, чтобы показывать различия между ожидаемыми и реальными изменениями языка C++.

Какие изменения предлагает инициативная группа стандарта C++!!, чтобы сделать язык C++ красивым, мощным и востребованным средством современной разработки? Из наиболее заметных улучшений:

  • Включение в стандарт концепторов, реализующих аспектно-ориентированную парадигму наследуемого кода;
  • Многовекторная диспетчеризация динамического полиморфизма для трансляции полиморфного интерфейса в рантайм;
  • Нативная поддержка каппа-функторов, и отображение их на множества булеан с ковариантной структурой, решающая проблему единичности метаданных;
  • Рекуррентные конструкторы, реализующие перезагрузку объектов-функций для дружественных родовых классов;
  • Расширенная арифметика указателей для поддержки адресации фрагментов унаследованных виртуальных структур данных в спецификаторе сборки;
  • Трансформация мутабельных объектов через операторы доступа к полям класса посредством лаяй-генераторов.

Так же комитет указывает на синтаксические особенности языка C++, которые необходимо в ближайшее время доработать в режиме препроцессора либо стандартными библиотеками:

  • Произвольные типы для конструкции case ... switch (в настоящий момент возможны только int или enum);
  • Постфиксная запись типов в определениях, исключающая последующую нотацию вычисления конечного типа «по спирали»;
  • Парсинг кода вперед, снимающий проблему прописывания прототипов функций в не-классовой части языка;
  • Объединение констант нулевых значений NULL, nullptr, std::nullptr_t, (void*)0, etc. под одним именем REALLYNULL;
  • Новые бинарные операторы <<< и >>> для поддержки инструкций циклического сдвига ROR и ROL, реализованные в большинстве микропроцессоров;
  • Замена контекстно-зависимых ключевых слов const, static, etc. на термины, соответствующие выполняемым функциям (см. список на сайте комитета);
  • Добавление строкового класса CoreString с поддержкой ASCII и UNICODE, вобравшего в себя лучшие черты wchar и Trolltech Qt QString;
  • Долгожданная поддержка модулей с рекомендованным отступление от заголовочных *.h-файлов в пользу файлов интерфейса *.i;

Члены инициативной группы подчеркивают, что стандарт C++!! не может быть принят в том же режиме, что используемый ранее стандарт C++0x, так как он, возможно, не будет точно соответствовать конечному варианту стандарта, исключающему проблемы совместимости с уже существующим кодом. Однако, если релиз C++17 будет провальным, возможности C++!! будут иметь дополнительный коэффициент в будущем голосовании по стандарту C++18.

>>> Подробности


 
MyTetra Share v.0.59
Яндекс индекс цитирования