, make_unique, ...), но не при выделении стека в одном и том же месте.
Мне не удалось еще больше сократить код. В частности, это должен быть цикл, он должен использовать std::initializer_list, он должен вызывать std::stacktrace::current() и т. д.
Следующий код выдает ошибку, указывающую, что x имеет значение, хотя оно должно быть пустым: [code]#include #include #include #include #include
void f() { for (auto x : std::initializer_list({std::nullopt})) { if (x.has_value()) throw std::runtime_error("Wrong"); std::stacktrace::current(); } }
int main() { std::println("Start"); auto b = new bool(true); try { f(); } catch (...) { std::println("Exception"); } delete b; std::println("Stop"); } [/code] Godbolt: https://godbolt.org/z/MxW6317fz Дополнительная информация: [list] [*]Это происходит только при создании сборки «Релиз», а не для сборок «Отладка».
[*]Это происходит независимо от подключенного отладчика.
[*]Это происходит только при выделении кучи ([code]new bool[/code], make_unique, ...), но не при выделении стека в одном и том же месте.
[*]Мне не удалось еще больше сократить код. В частности, это должен быть цикл, он должен использовать std::initializer_list, он должен вызывать std::stacktrace::current() и т. д.