Middle
56
questionbank

Какие полезные функции и возможности были добавлены в C++14?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech
  • Обобщенные захваты лямбда-выражений (Generic Lambda Captures): Позволяет захватывать переменные по значению или ссылке с автоматическим выводом типа.

    cpp
  • Вывод типов возвращаемого значения функций (Return Type Deduction for Normal Functions): Компилятор может определять тип возвращаемого значения функции, если его можно вывести из return.

    cpp
  • Двоичные литералы (Binary Literals): Позволяет записывать числа в двоичной системе счисления, используя префиксы 0b или 0B.

    cpp
  • Разделители разрядов в числовых литералах (Digit Separators): Позволяет использовать апостроф ' для визуального разделения цифр в числовых литералах.

    cpp
  • decltype(auto): Поведение decltype применяется к автоматическому выводу типа. Сохраняет ссылочность и квалификаторы const, volatile.

    cpp
  • Расширенные возможности constexpr:

    • Функции constexpr могут содержать операторы if, for, while.
    • Может использоваться с функциями, возвращающими void.
    • Допускаются локальные переменные.
    cpp
  • Гарантированная оптимизация копирования с нулевым оверхедом (Guaranteed Copy Elision - Partial): Частично гарантирует устранение лишнего копирования в определенных случаях (например, при возврате rvalue из функции). Стало полностью гарантированным в C++17.

  • Атрибуты (Attributes): Добавлены новые стандартные атрибуты:

    • [[deprecated]]: Указывает на устаревший элемент, при использовании которого компилятор выдает предупреждение.
    • [[carries_dependency]]: Используется в многопоточном программировании для оптимизации.
  • std::make_unique: Удобный способ создания объектов, управляемых std::unique_ptr. Предотвращает некоторые потенциальные проблемы (например, утечки памяти в случае выброса исключения).

    cpp
  • std::shared_timed_mutex: Добавлен для реализации блокировок чтения/записи.

  • Маленькие улучшения в стандартной библиотеке: Добавлены std::integer_sequence, std::exchange, std::quoted, std::get для кортежей по типу.