ли компилятор быть достаточно умным, чтобы выкинуть try-catch?
Суть проблемы: функция имеет разные имплементации по винду и линуксы, в винде она может выбросить исключение, а в линуксе - нет.
Писать ifdef'ы не хочется в коде: портит читаемость. А код довольно горячий.
Ну так скомпилируй и посмотри )
без ifdef никаких гарантий нет, так что если код горячий лучше явно написать
По-моему, стоимость неиспользуемого try-блока будет крайне низка - стоит ли овчинка выделки? А так - гарантий нет, конечно
Легко же проверить Большая тройка даже в дебаге выкидывает catch целиком в таком случае
мне кажется, такой псевдокод мог бы работать constexpr const bool win = _WIN32; void foo() noexcept(win);
Главное - на #define _WIN32 0 не нарваться...
Обсуждают сегодня