Какой уровень оптимизации в Clang и G CC удаляет try-catch вокруг кода noexcept? - PullRequest
1 голос
/ 17 июня 2020

Рассмотрим следующий код:

struct T {
  void f() noexcept { /* an arbitrary long piece of code */ }
};
void some_function() {
  T t{};
  try { t.f(); }
  catch(...) {
    std::cout << "Something is Wrong!!"; // An unreachable line of code
  }
}

Есть ли какой-либо уровень оптимизации в Clang и G CC, который удаляет весь try/catch и просто вызывает t.f() вместо этого? Есть ли какой-нибудь специальный переключатель c для включения / отключения этой оптимизации?

...