Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Обзор новых вероятностей С 14: Часть 2

Anna | 24.06.2014 | нет комментариев

На данный раз новшеств значительно поменьше, чем в первой части. Все-таки С 14 считается незначительным релизом, нацеленным скорее на устранение недочетов С 11, чем привнесение новых вероятностей.

Короткий перечень:

  • Освобождение памяти определенного размера
  • Одинарная кавычка, как цифровой разграничитель
  • Аттрибут [[deprecated]]
  • Пользовательские литералы для std::complex
  • Filesystem API
  • Реформирование сетевого порядка байт

Обзор новых вероятностей С 14: Часть 1
Нынешний черновик эталона

Метаморфозы в самом языке

Освобождение памяти определенного размера

В C 11 программисты могут определить статический способ класса operator delete, тот, что бы принимал параметром размер удалямого объекта. Сейчас же в эталон был добавлен соответствующий всеобщий оператор delete. Это метаморфоза призвано повысить эффективность современных распределителей памяти.

Добавленные операторы имеют следующие сигнатуры:

void operator delete(void* ptr, std::size_t size) noexcept;
void operator delete(void* ptr, std::size_t size, const std::nothrow_t&) noexcept;
void operator delete[](void* ptr, std::size_t size) noexcept;
void operator delete[](void* ptr, std::size_t size, const std::nothrow_t&) noexcept;

Стержневой возникшей тут загвоздкой совместимости является случай, когда применяются новая системная и ветхая пользовательская библиотеки разделения памяти. В новых программах, вызовы к оператору, не принимающему размер, будут направляться в пользовательскую библиотеку, а вызовы с размером — в системную библиотеку. На данный момент, стандартное поведение операторов с размером — это вызов соответствующих операторов без размера, следственно задач пока не будет, а пользователям, желающим получить приход приозводительности, нужно будет добавить соответствующие версии операторов самим. Впрочем в грядущих версиях эталона планируется изменить это поведение. Таким образом, комитет дает программистам время адаптировать их распределители памяти, во избежание невзначай возникших задач.

Одинарная кавычка, как цифровой разграничитель

Сейчас дозволено будет применять одинарные кавычки для обособления порядков чисел. Скажем, числа10485761'048'5761'0'4'8'5'7'60X1000000x10'0000, и 0'004'000'000 имеют одно и тоже значение.
Впрочем это метаморфоза приводит к дальнейшим задачам:
Во-первых, изменяется поведение растяжения макросов. Скажем:

#define M(x, ...) __VA_ARGS__
int x[2] = { M(1'2,3'4) }; 
 // C  11: int x[2] = {};
 // Now:   int x[2] = { 3'4 };

А во-вторых, уйма редакторов и других утилит, предуготовленных для подсветки синтаксиса, будут сейчас ненормально парсить код. Даже Програпрогр не устоял, сравните:

int testing_habrahabr_syntax_highlighter = 1000;
int testing_habrahabr_syntax_highlighter = 1'000;
int testing_habrahabr_syntax_highlighter = 1'000'000;
int testing_habrahabr_syntax_highlighter = 1'0'0'0'0'0'0;

Аттрибут [[deprecated]]

В C 11 был стандартизирован синтаксис объявления аттрибутов, ранее знаменитых как __attribute__ для gcc/clang и __declspec для VC . В C 14 был добавлен аттрибут, дозволяющий пометить всякий из следующих токенов: класс, переменную, нестатический член класса, функцию, перечисление, специализацию образца либо typedef — как устаревший, если по каким-либо причинам последующее их применение неугодно. В итоге, при применении программистом помеченных таким аттрибутом токенов, компилятор будет выдавать предупреждение. Опциональный параtwomk! href=”http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3732.pdf”>параллельных хэш-контейнеров.

  • Растяжения для параллелизма: Первоначально включает в себя параллельную STL библиотеку с помощью параллельных алгорифмов, использующих несколько ядер процессора, и векторизуемых (vectorizable) алгорифмов, использующих всю мощь комплектов инструкций процессоров.

Все технические спецификации применяют пространтсво имен std::experimental.

Также незадолго начала свою работу группа, занимающаяся графикой, с целью стандартизировать «2D Lite» API для рисования. Малое обсуждение графики и C дозволено посмотреть в презентации Герба Саттера с GoingNative2013, начиная с 42:30 тут.

Завершение

Дальнейшая встреча комитета намечена на февраль 2014 года. Позже чего мы получим некоторое подобие релиз кандидата дальнейшего — С 14 эталона, также знаменитого, как С 1y.
По последним данным, Clang совместно с libc в SVN теснее всецело реализуют нынешний черновик эталона, GCC несколько отстает. Удостовериться в этом дозволено тут: Clanglibc GCC.

Обзор новых вероятностей С 14: Часть 1
Нынешний черновик эталона

P.S. swap оператор

Среди всех прочих предложений для стандартизации, прошлой весной возникло предложение внести в С особый оператор обмена :=:, Дабы заменить функцию стандартной библиотеки std::swap. Тогда некоторые восприняли это как первоапрельскую шутку, но в конце августа предложение обновилось до версии 2. Мне пока не вестимо суждение комитета о данном операторе, но его еще пока не одобрили для стандартизации. Подробнее прочитать о нем дозволено тут.

Как Вы считаете, необходим ли в С оператор :=:?

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Проголосовало 198 человек. Воздержался 51 человек.

 

Источник: programmingmaster.ru

 

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB