Namespaces
Variants

C++14

От ru.cppreference.net
< cpp

C++14 — это минорная версия после мажорной версии C++11, содержащая в основном небольшие улучшения и исправления дефектов. Её утверждение было объявлено 18 августа 2014 года. Она была выпущена 15 декабря 2014 года.

До её утверждения иногда использовалось обозначение C++1y для указания на то, что релиз произошёл в 2010-х годах.

Новые возможности языка

Новые возможности библиотеки

  • std::make_unique
  • std::shared_timed_mutex и std::shared_lock
  • std::integer_sequence
  • std::exchange
  • std::quoted
  • и множество небольших улучшений существующих средств библиотеки, таких как
    • перегрузки с двумя диапазонами для некоторых алгоритмов
    • версии трейтов типов в виде псевдонимов типов
    • пользовательские литералы для basic_string, duration и complex
    • и т. д.

Отчёты о дефектах

Отчёты о дефектах, исправленных в C++14 (276 в ядре, 158 в библиотеке)

Поддержка компиляторов

Возможности языка C++14

Возможность C++14

 
Документ(ы)

 
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
 
Embarcadero C++ Builder
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
IBM XL C++
Sun/Oracle C++
Уточнённая формулировка для контекстных преобразований N3323 4.9 3.4 18.0* Да 4.9 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Двоичные литералы  (FTM)* N3472 4.3*
4.9
2.9 19.0 (2015)* Да 4.10 11.0 2015 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.14
decltype(auto), Вывод типа возвращаемого значения для обычных функций  (FTM)*  (FTM)* N3638 4.8 (частично)*
4.9
3.3 (частично)*
3.4
19.0 (2015)* Да 4.9 15.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Инициализированный/Обобщённый захват лямбды (init-capture)  (FTM)* N3648 4.5 (частично)
4.9
3.4 19.0 (2015)* Да 4.10 15.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.15
Обобщённые лямбда-выражения  (FTM)* N3649 4.9 3.4 19.0 (2015)* Да 4.10 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Шаблоны переменных  (FTM)* N3651 5 3.4 19.0 (Update 2)* Да 4.11 17.0 17.4 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Расширенные constexpr  (FTM)* N3652 5 3.4 19.10* Да 4.11 17.0 17.4 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.15
Агрегаты с инициализаторами членов по умолчанию  (FTM)* N3653 5 3.3 19.10* Да 4.9 16.0 16.1 9.0 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.14
Пропуск/расширение выделений памяти N3664 Н/Д 3.4 Н/Д Да Н/Д Н/Д 17.4 Н/Д 8.6  10.3 17.1.0 1.1.0 Н/Д Н/Д
[[deprecated]] атрибут N3760 4.9 3.4 19.0 (2015)* Да 4.9 15.0*
16.0
16.1 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.14
Размерная деаллокация  (FTM)* N3778 5 3.4 19.0 (2015)* Да 4.10.1 17.0 16.1 8.6  10.3 17.1.0 1.1.0 16.1.1* 5.14
Одинарная кавычка как разделитель цифр N3781 4.9 3.4 19.0 (2015)* Да 4.10 16.0 2015 9.0 8.6  10.3 17.1.0 1.1.0 13.1.2* 5.14
 

Возможность C++14
 

Документ(ы)
GCC
Clang
MSVC
Apple Clang
EDG eccp
Intel C++
Nvidia HPC C++ (ex PGI)*
Nvidia nvcc
Cray
 
Embarcadero C++ Builder
IBM Open XL C++ for AIX
IBM Open XL C++ for z/OS
IBM XL C++
Sun/Oracle C++

Возможности библиотеки C++14

Возможность C++14

 
Документ(ы)

 
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
 
IBM Open XL C/C++ for AIX*
Sun/Oracle C++*
Embarcadero C++ Builder*
constexpr для <complex> N3302 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Прозрачные функциональные объекты операторов  (FTM)* N3421 4.9 3.4 18.0* Да  17.1.0 5.15 10.3
std::result_of и SFINAE  (FTM)* N3462 5 Да 19.0 (Update 2)* Да  17.1.0 5.15 10.3
constexpr для <chrono> N3469 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
constexpr для <array> N3470 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
constexpr для <initializer_list>, <utility> и <tuple> N3471 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Улучшенный std::integral_constant  (FTM)* N3545 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Пользовательские литералы для <chrono> и <string>  (FTM)*  (FTM)* N3642 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Нулевые прямые итераторы  (FTM)* N3644 5 (частично)
10
3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
std::quoted  (FTM)* N3654 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
std::make_unique  (FTM)* N3656 4.9 3.4 18.0* Да  17.1.0 5.15 10.3
Гетерогенный ассоциативный поиск  (FTM)* N3657 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
std::integer_sequence  (FTM)* N3658 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
std::shared_timed_mutex N3659 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
std::exchange  (FTM)* N3668 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Исправление constexpr функций-членов без const N3669 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Обращение к кортежам по типу: std::get<T>()  (FTM)* N3670 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Двухдиапазонные std::equal, std::is_permutation, std::mismatch  (FTM)* N3671 5 3.4 19.0 (2015)* Да  17.1.0 5.15 10.3
Шаблоны псевдонимов для трейтов преобразования  (FTM)* N3655 4.9 3.4 18.0* Да 
Пользовательские литералы для std::complex  (FTM)* N3779 4.9 3.4 19.0 (2015)* Да 
DR11: std::is_null_pointer  (FTM)* LWG2247 4.9 3.4 19.0 (2015)*  
std::is_final  (FTM)* LWG2112 5 3.4 19.0 (2015)*  
std::make_reverse_iterator  (FTM)* LWG2285 5 3.4 19.0 (2015)*  
std::shared_timed_mutex  (FTM)* N3891 4.9 3.5 19.0 (2015)* Да 
std::tuple_element_t  (FTM)* N3887 4.10 3.5 19.0 (2015)* Да 
 

Возможность C++14
 

Документ(ы)
GCC libstdc++
Clang libc++
MSVC STL
Apple Clang*
 
IBM Open XL C/C++ for AIX*
Sun/Oracle C++*
Embarcadero C++ Builder*

* — наведите курсор на ячейку, отмеченную звёздочкой *, чтобы увидеть дополнительные всплывающие примечания.
DRnn — число nn после «DR» обозначает целевую версию C++, к которой применяется отчёт о дефекте, например, DR20 → C++20.

Внешние ссылки

1.  C++14 — Википедия
2.  Рабочие примеры C++14