Работы ведутся только на уровне отдельных тулчейнов/компиляторов. В стандарт пока рано включать - это не самая популярная фича и есть проблемы с диагностикой
Это было основным кейсом у Александреску. Однако большинство людей в комитете весьма обоснованно решили, что:
кидать int/enum -- жуть и будет проскакивать мимо всех пользовательских catch(const std::exception& e)
обязывать пользователей всегда хранить тип, отнаследованный от std::exception -- повлияет на производительность std::expected, из-за vptr+код+флаг он перестанет влезать в регистры для возврата и компилятор начнёт возвращать его через стек
Если вы видите рабочий выход из этой ситуации -- предлагайте рабочее решение, отправим его замечанием к C++23 от России.
std::views ленивые и не делают промежуточных контейнеров. Так что и std::views::chunk, и std::views::zip, и std::views::take лишь ловко оперируют указателями и возвращают вам ссылки на нужные элементы в нужный момент.
К предложению есть серьёзные возражения https://wg21.link/p1947r0 и много вопросов по поводу расширяемости на пользовательские типы. Пока проблемы не будут решены - предложение не пройдёт... после этого может тоже не пройти. К тому же один из разработчиков executors планировал сделать заход на исключения, может придумает что-то кардинально лучшее.
В примере везде используется std::get, который кидает исключение при попытке достать неверный тип. Замена на get_unsafe кардинально изменит поведение типа
В стандарте прописывается интерфнйс а не реализация. Слова "exposition only" в предложении не спроста стоят. Так что ничего не запрещает оптимизацию из abseil использовать в реализации стандартной библиотеки.
На operator*() никак std::variant не ложится, а std::visit покрывает большинство кейсов когда нужен непроверенный доступ. Если у вас другие кейсы и непровереный доступ вам нужен - пишите предложение для включения в стандарт, поможем с защитой идеи.
В комитете есть ребята из гугла, но они не торопятся предлагать подобное, а вместо этого голосуют по предложению expected. Может Status и StatusOr не так ужи и хороши?
Плохая поддержка в компиляторах - основной стоппер. Тот же Boost пока не внедрил модули, в частности потому что у большинства разработчиков на их машинах в компиляторах модули просто не работают.
Да, если не случится непредвиденного. Выложим в opensource вместе с:
Шаблоном для создания своих сервисов. CI, сборка, тестовое окружение уже настроены из коробки
Сервисом динамических конфигов. Можно менять параметры вашего работающего сервиса без его рестарта
Документацией, примерами и чатами поддержки (куда же без этого!)
Нравится потому что понятнее чем альтернативы:
Хотя, на мой взгляд, с as/is тоже не идельно:
Ок, уговорили. Если сделаете черновое предложение по инструкции - поможем с его доведением до ума и продвижением в комитете
Работы ведутся только на уровне отдельных тулчейнов/компиляторов. В стандарт пока рано включать - это не самая популярная фича и есть проблемы с диагностикой
А давайте действительно пофорсим фикс через коментарий от страны. В предложении есть замечание, что возможна кастомизация выкидывания исключения, но в данный момент её не предлагают.
Завёл тикет https://github.com/cpp-ru/ideas/issues/509
Добавьте плиз в тикет примеров/мотивации/деталей/...
Да, там может быть что угодно, хоть std::vector
Вот так:
Это было основным кейсом у Александреску. Однако большинство людей в комитете весьма обоснованно решили, что:
кидать int/enum -- жуть и будет проскакивать мимо всех пользовательских
catch(const std::exception& e)
обязывать пользователей всегда хранить тип, отнаследованный от
std::exception
-- повлияет на производительностьstd::expected
, из-за vptr+код+флаг он перестанет влезать в регистры для возврата и компилятор начнёт возвращать его через стекЕсли вы видите рабочий выход из этой ситуации -- предлагайте рабочее решение, отправим его замечанием к C++23 от России.
std::views ленивые и не делают промежуточных контейнеров. Так что и std::views::chunk, и std::views::zip, и std::views::take лишь ловко оперируют указателями и возвращают вам ссылки на нужные элементы в нужный момент.
Боюсь что придётся вначале стандартизировать asm: http://eel.is/c++draft/dcl.asm
К предложению есть серьёзные возражения https://wg21.link/p1947r0 и много вопросов по поводу расширяемости на пользовательские типы. Пока проблемы не будут решены - предложение не пройдёт... после этого может тоже не пройти. К тому же один из разработчиков executors планировал сделать заход на исключения, может придумает что-то кардинально лучшее.
Завезут, но в C++23 не успели.
До тех пор придётся пользоваться заменами, на подобие https://github.com/graphitemaster/incbin
Не, вроде такое не планируется :)
Теперь можно получится продвинуть бумагу на constexpr для <cstring>. А то как-то неправильно писать
std::string_view{s}.size()
вместоstd::strlen(s)
Да, ranges ленивые и я походу тоже: в коменте справа я написал, что мы получим если пройдёмся по всем элементам диапазона и сохраним их куда-нибудь.
В примере везде используется std::get, который кидает исключение при попытке достать неверный тип. Замена на get_unsafe кардинально изменит поведение типа
В стандарте прописывается интерфнйс а не реализация. Слова "exposition only" в предложении не спроста стоят. Так что ничего не запрещает оптимизацию из abseil использовать в реализации стандартной библиотеки.
На operator*() никак std::variant не ложится, а std::visit покрывает большинство кейсов когда нужен непроверенный доступ. Если у вас другие кейсы и непровереный доступ вам нужен - пишите предложение для включения в стандарт, поможем с защитой идеи.
В комитете есть ребята из гугла, но они не торопятся предлагать подобное, а вместо этого голосуют по предложению expected. Может Status и StatusOr не так ужи и хороши?
Они базируются на рефлексии, а рефлексия окажется в лучшем случае в C++26. Так что пока ожидаем
Плохая поддержка в компиляторах - основной стоппер. Тот же Boost пока не внедрил модули, в частности потому что у большинства разработчиков на их машинах в компиляторах модули просто не работают.