Какие полезные функции и возможности были добавлены в C++14?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
-
Обобщенные захваты лямбда-выражений (Generic Lambda Captures): Позволяет захватывать переменные по значению или ссылке с автоматическим выводом типа.
// C++14 auto lambda = [x = get_value()] { return x; }; -
Вывод типов возвращаемого значения функций (Return Type Deduction for Normal Functions): Компилятор может определять тип возвращаемого значения функции, если его можно вывести из
return.// C++14 auto func() { return 42; // return type is int } -
Двоичные литералы (Binary Literals): Позволяет записывать числа в двоичной системе счисления, используя префиксы
0bили0B.// C++14 int binary_value = 0b1101; // 13 -
Разделители разрядов в числовых литералах (Digit Separators): Позволяет использовать апостроф
'для визуального разделения цифр в числовых литералах.// C++14 long big_number = 1'000'000; -
decltype(auto): Поведениеdecltypeприменяется к автоматическому выводу типа. Сохраняет ссылочность и квалификаторыconst,volatile.// C++14 int x = 5; int& ref = x; decltype(auto) result = ref; // result has type int& -
Расширенные возможности
constexpr:- Функции
constexprмогут содержать операторыif,for,while. - Может использоваться с функциями, возвращающими
void. - Допускаются локальные переменные.
// C++14 constexpr int factorial(int n) { int res = 1; for (int i = 1; i <= n; ++i) { res *= i; } return res; } - Функции
-
Гарантированная оптимизация копирования с нулевым оверхедом (Guaranteed Copy Elision - Partial): Частично гарантирует устранение лишнего копирования в определенных случаях (например, при возврате rvalue из функции). Стало полностью гарантированным в C++17.
-
Атрибуты (Attributes): Добавлены новые стандартные атрибуты:
[[deprecated]]: Указывает на устаревший элемент, при использовании которого компилятор выдает предупреждение.[[carries_dependency]]: Используется в многопоточном программировании для оптимизации.
-
std::make_unique: Удобный способ создания объектов, управляемыхstd::unique_ptr. Предотвращает некоторые потенциальные проблемы (например, утечки памяти в случае выброса исключения).// C++14 auto ptr = std::make_unique<int>(10); -
std::shared_timed_mutex: Добавлен для реализации блокировок чтения/записи. -
Маленькие улучшения в стандартной библиотеке: Добавлены
std::integer_sequence,std::exchange,std::quoted,std::getдля кортежей по типу.