Что вы используете из C++20 и C++23
Вопрос
Расскажите, какие возможности C++20 и C++23 вы используете в работе и зачем.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Концепты вместо SFINAE
Ranges: проекции, views, ranges::to
std::format и std::print вместо iostream-манипуляций
Spaceship и назначенные инициализаторы для простых типов
jthread и stop_token для потоков
expected для ошибок без исключений; осторожность с поддержкой компиляторов
Что могут спросить следом
- Почему модули ещё не везде?
- В каких случаях вы бы написали свою корутину?
Разбор
Каждый день использую концепты: ограничения шаблонов стали читаемыми, а ошибки короткими. Ranges: std::ranges::sort(v, {}, &User::age) с проекцией, конвейеры views::filter | views::transform, а в C++23 ranges::to<std::vector>(). Форматирование только через std::format, а где доступен C++23, через std::println. Для простых значимых типов auto operator<=>(const T&) const = default; вместо шести операторов и назначенные инициализаторы для конфигов. Потоки запускаю через std::jthread со std::stop_token: не забудешь join, есть кооперативная остановка. Для ожидаемых ошибок в C++23-коде std::expected вместо исключений. Корутины применяю через библиотеки для асинхронного ввода-вывода. Модули пока точечно: поддержка в CMake и компиляторах есть, но интеграция со сторонними библиотеками и инструментами ещё неровная. Перед использованием новой библиотечной возможности проверяю макросы __cpp_lib_* и минимальные версии компиляторов в CI.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.