Некоторые люди из комитета говорили, что им ну очень нужно, у них всё формулы работают только с правильным округлением. Правда потом они очень удивлялись, что округление на самом деле не работает во многих их формулах, так как компилятор оптимизирует с использованием дефолтного округления https://godbolt.org/z/KKavdE
Надеюсь что здравый смысл возобладает и constexpr cmath будет
-fno-exceptions и -fno-rtti - это несовместимые со стандартом расширения/сужения.
В стандарт же эту возможность никто не протащил, т.к. на практике оно работает совсем не так как ожидается. Например, noexcept для методов автоматически не проставляется из-за того, что где-то внутри метода может быть вызов функции из сторонней библиотеки, которая может кинуть исключение. Были попытки, но авторы потом сами убеждались, что получается фигня какая-то.
В стандарте есть много способов сделать фичу отключаемой - от описания фичи таким образом, что она может ничего не делать, до помечания её как implemntation defined. Исключения и RTTI отключаемыми фичами не являются.
Что же касается исключений и трейсов, то там прям в стандартную библиотеку добавляется метод для включения функционала:
p1061r1 недавно обсуждали, если небольшие шансы увидеть в C++23
Networking активно обсуждается, что будет - непонятно. Комитет всё ещё хочет универсальные executors, с которыми должен будет работать Networking... но пока не выходит
Да, как раз на этой встрече добавили. В посте не освещал, так что хоть тут немного расскажу:
auto(x) - встроенный в язык способ сделать decay + copy значения, другими словами что-то наподобие decay_t<decltype(x)>{x};. Как верно заметили, не самая востребованная вещь
"Deducing this" - позволяет писать функции с шаблонным this. Теперь можно написать template <class Self> decltype(auto) value(this Self&&) { return std::forward<Self>(*this).value_; }и получать const& , & и && ссылки на value_ в зависимости от константности this. Так же получили возможность делать рекурсивные лямбды [](this auto self, int n) -> int { return (n <= 1) ? 1 : n * self(n-1); + };
Их не довезли, потому что вы их не предложили, значит вам оно и не надо :-\
Предложение может написать и направить в комитет каждый. Даже специальную русскоязычную группу сделали, чтобы упростить и без того простой процесс. Так что если хотите увидеть replace|tockenize - пишите прототип и proposal, помочь всегда рады в https://stdcpp.ru/proposals/ и в чатике https://t.me/ProCxx
Скорее история про то, что всем не угодишь. Только-только добавили Modules, Ranges, Coroutines, Concepts... но кто-то ждал совсем других новинок.
Я вот например flat_set и stacktrace жду сильно больше чем operator[] (int.int). А вот математикам и физикам второе зачастую сильно важнее чем, например, flat_set
Два самых популярных компилятора генерируют практически одинаковый код https://godbolt.org/z/d3s1bnrje
Можете пожалуйста привести пример, где два разных компилятора какого-нибудь другого языка программирования, выдают схожий код?
UFCS на паузе
Если знаете как оживить предложение или у вас есть альтернативный подход, позволяющий достичь схожего результата - пожалуйста расскажите о нём.
Некоторые люди из комитета говорили, что им ну очень нужно, у них всё формулы работают только с правильным округлением. Правда потом они очень удивлялись, что округление на самом деле не работает во многих их формулах, так как компилятор оптимизирует с использованием дефолтного округления https://godbolt.org/z/KKavdE
Надеюсь что здравый смысл возобладает и constexpr cmath будет
Так и в C++23 это есть, если лишние аллокации ок:
-fno-exceptions и -fno-rtti - это несовместимые со стандартом расширения/сужения.
В стандарт же эту возможность никто не протащил, т.к. на практике оно работает совсем не так как ожидается. Например, noexcept для методов автоматически не проставляется из-за того, что где-то внутри метода может быть вызов функции из сторонней библиотеки, которая может кинуть исключение. Были попытки, но авторы потом сами убеждались, что получается фигня какая-то.
Кажется что вы только что изобрели Boost. Только он тоже не всем нравится :)
В стандарте есть много способов сделать фичу отключаемой - от описания фичи таким образом, что она может ничего не делать, до помечания её как implemntation defined. Исключения и RTTI отключаемыми фичами не являются.
Что же касается исключений и трейсов, то там прям в стандартную библиотеку добавляется метод для включения функционала:
void this_thread::set_capture_stacktraces_at_throw(bool enable = true) noexcept;
Патчить компилятор нет нужды, в большинстве из них уже есть опция -fdebug-prefix-map
Если вам не нравятся монадические интерфейсы из C++23, то можно сделать свои монадические интерфейсы на основе корутин %)
Ну а std::expected на подходе, в прошлую пятницу LWG как раз ревьюила текст для включения в стандарт. Шансы успеть к C++23 есть.
Да, работа с отдельно стоящими pdb возможна и реализована в протитипе
p1061r1 недавно обсуждали, если небольшие шансы увидеть в C++23
Networking активно обсуждается, что будет - непонятно. Комитет всё ещё хочет универсальные executors, с которыми должен будет работать Networking... но пока не выходит
Он уже тюринг полный, и рекурсия есть (например, через рекурсивное подключение одного и того же хедера). Полностью тема раскрывается здесь
Да, как раз на этой встрече добавили. В посте не освещал, так что хоть тут немного расскажу:
auto(x) - встроенный в язык способ сделать decay + copy значения, другими словами что-то наподобие
decay_t<decltype(x)>{x};
. Как верно заметили, не самая востребованная вещь"Deducing this" - позволяет писать функции с шаблонным this. Теперь можно написать
template <class Self> decltype(auto) value(this Self&&) { return std::forward<Self>(*this).value_; }
и получать const& , & и && ссылки на value_ в зависимости от константности this. Так же получили возможность делать рекурсивные лямбды[](this auto self, int n) -> int { return (n <= 1) ? 1 : n * self(n-1); + };
Они там уже хранятся, в дебажных символах и таблицах экспорта
Их не довезли, потому что вы их не предложили, значит вам оно и не надо :-\
Предложение может написать и направить в комитет каждый. Даже специальную русскоязычную группу сделали, чтобы упростить и без того простой процесс. Так что если хотите увидеть replace|tockenize - пишите прототип и proposal, помочь всегда рады в https://stdcpp.ru/proposals/ и в чатике https://t.me/ProCxx
P.S.: split есть начиная с C++20.
А какие именно вещи вызывали у вас ощущение «наконец-то добавили то, чего больше всего не хватало» ?
Скорее история про то, что всем не угодишь. Только-только добавили Modules, Ranges, Coroutines, Concepts... но кто-то ждал совсем других новинок.
Я вот например flat_set и stacktrace жду сильно больше чем operator[] (int.int). А вот математикам и физикам второе зачастую сильно важнее чем, например, flat_set
Если не используете - то просто не включаете, и не платите
Фича elifdef elifndef из С23 - ужасна:
не надо развивать препроцессор
читаемость - так себе
нет возможности/смысла использовать их при написании переносимого кода
они крайне редко нужны
Протащили только ради совместимости с C.
Зависит от платформы и возможностей компилятора, есть подозрение что мьютекс будет использоваться не во всех функциях класса.