C ++ имел throw
спецификацию , которая устарела с C ++ 11 и может использоваться следующим образом:
void f() throw(int);
, но отсутствие этого спецификатора в прототипе функции НЕ гарантирует эта функция не будет выдавать
Начиная с C ++ 11, существует нет исключений, кроме спецификатора :
void f() noexcept; // the function f() does not throw
void (*fp)() noexcept(false); // fp points to a function that may throw
, но снова
нет, кроме спецификации на функция не является проверкой во время компиляции; это просто метод для программиста сообщить компилятору, должна ли функция генерировать исключения
Приведенные выше примеры кода взяты со связанных страниц, и вы можете прочитать больше об этих спецификаторах.
ОБНОВЛЕНИЕ: Следуя предложению @ FrancoisAndrieux, я хочу добавить, что хотя это не проверка во время компиляции , вы можете проверить во время компиляции, имеет ли функция этот спецификатор или нет, что может помочь вам оптимизировать ваш код