LINUX.ORG.RU
ФорумTalks

Объявлено о готовности международного стандарта C++14

 


1

2

http://www.opennet.ru/opennews/art.shtml?num=40408
Для Ъ:

  • Поддержка автоматического определения типа, возвращаемого любой функцией, в которой используется несколько выражений return, содержащих значение одного типа. В С++ определение типов было ограничено лямбда-функциями, содержащими только один вызов return;
  • Реализован дополнительный синтаксис определения типа - decltype(auto), который можно использовать для определения результирующего типа возвращаемого функцией значения (например, «string lookup1(); decltype(auto) look_up_a_string_1() { return lookup1(); }»);
  • Поддержка захвата переменных лямбда-функций с возможностью захватывать переменные с перемещением значения и объявлять произвольные локальные переменные в лямбда-объекте;
  • Возможность указания типа «auto» для лямбда-выражений, позволяющего вынести определение типа на плечи компилятора по аналогии с вычислением типов переменных, объявленных с указанием ключевого слова «auto»;
  • Поддержка задания шаблонов для переменных, в дополнение к ранее поддерживаемым шаблонам для функций и классов;
  • Расширение числа возможностей, которые можно использовать внутри функций constexpr. В частности, C++14 позволяет объявлять локальные переменные и использовать выражения if, switch, for, while, do-while, допускает мутацию объектов;
  • Добавлен атрибут "[[deprecated]]", при помощи которого можно пометить элемент устаревшим, после чего останется возможность использования этого элемента, но будут выводиться предупреждения, что в будущем его поддержка может быть прекращена.
  • Поддержка разделяемых мьютексов (shared_mutex) и разделяемых блокировок (shared_lock);
  • Добавлены псевдонимы «*_t» для трансформации типов, позволяющие уйти от использования многословных объявлений c typename (remove_reference_t вместо «typename remove_reference», make_unsigned_t вместо typename make_unsigned и т.п.);
  • Возможности обращения к элементам кортежа по типу, при условии, что в кортеже содержится только один элемент данного типа.

Не думал, что когда-нибудь это скажу, но С++ потихоньку нет-нет да становится годным.

★★★★★

Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

CGI? На сях? Слабое место C - требуется ручное управление памятью. Для cgi это может вылиться в хорошую дыру в безопасности.

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

Не бойся, у меня все обычно дальше интранета не уходит + CGI'шки простые (прием-передача параметров для демона с общением через очереди или shm; пересылка видео).

А ручное управление памятью — это как раз сильная сторона сей, а не слабая!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Xellos

Чем это извращенная? Нормальная работа. Все нужное есть. И никакого оверхеда.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от ranka-lee

Это пока ты не передаешь этот указатель куда-то далеко, где с ним будет работать другая часть программы. Можно, конечно, не делать этого, а при необходимости передать большие данные скопировать их, но это - в производительности

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

В случае CGI есть чёткий момент когда всё стартует и когда всё заканчивается. Когда всё заканчивается - то всё что мы создали и выделили больше не нужно. Всё что надо хранить между запросами храниться где нибудь в другом месте. Всё очень чётко и ясно. Просто не надо засорять свои мозги некими сущностями и функциональностями.

Тут даже в типичном malloc нет нужды - откусывается кусок памяти и в нём делается тупой стек. Надо память - увеличиваем указатель на вершину. Завершили работу - возвращаем его в исходное состояние. И никаких утечек с фрагментацией в принципе.

ranka-lee
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.