2021-06-08 16:36:47
Отчет по онлайн-встрече комитета C++ от Антона Полухина.
Было добавлено много улучшающих жизнь исправлений в C++20:
- constexpr-проверка строки формата в std::format и std::format_to;
- работа std::ranges::split/join и представлений не только для forward-итераторов (да, сплит по разделителям теперь в C++!!),
- std::ranges::to теперь поможет вам сохранить произвольный диапазон в заданный контейнер;
В C++23 добавили:
- std::to_underlying для преобразования значения перечисления к его нижележащему типу;
- новая функция std::allocate_at_least(аллокатор, размер) , возвращающая пару "указатель-размер" , где размер может быть больше запрошенного (полезно для некоторых аллокаторов, которые могут выделить чуть больше памяти, и для избежания переаллокаций);
- std::spanstream, позволяющий использовать любой непрерывный отрезок памяти без выделения памяти и владения, и работать с ним, как с обычным io-потоком;
- новый if - if consteval - позволяющий узнать, идёт ли выполнение на стадии consteval-выполнения;
- убрали поддержку GC, ибо ей в том виде не пользовались, и добавлялось просто UB;
- Добавили вспомогательные классы std::out_ptr и std::inout_ptr, позволяющие работать с C API, и с пользовательскими умными указателями, автоматически управляя жизнью ресурса, поддерживая RAII;
- Оператор сравнения для type_info теперь constexpr, приближая нас к "Compile Time Type Info";
- новые алгоритмы std::starts_with и std::ends_with, без привязки к std::string и std::string_view;
- больше constexpr для std::optional и std::variant в куче мест, благодаря возможностям C++20 по constexpr-аллокациям;
- запрет конструирования std::string и std::string_view от nullptr.
Больше деталей – в новой статье Антона:
https://habr.com/ru/company/yandex/blog/561104/
#cpp #cpp23 #online_report #isocpp #easy_string_split_in_2021
1.3K viewsAlex Ф-ф-фэils! ︙, edited 13:36