Какви полезни функции и възможности бяха добавени в C++14?
sobes.tech AI
Отговор от 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; // типът на връщане е 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; // резултатът има тип 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; } - Функции
-
Гарантирана оптимизация на копирането с нулов overhead (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за кортежи по тип.