Если объявленная функция имеет спецификатор noexcept
(noexcept
, noexcept(true)
, noexcept(false)
или любой другой noexcept(expr)
, который оценивается как true
или false
), но он определен в другом месте, нужно ли специфицировать спецификатор noexcept
в определении снова или только в его прямом объявлении?
С++ 11, спецификатор noexcept`, определение против объявления
Ответ 1
[except.spec]/р4:
Если какое-либо объявление функции имеет спецификацию исключения, которая не является noexcept-спецификацией, допускающей все исключения, все деклараций, включая определение и любые явные специализация этой функции должна иметь совместимую Исключение-спецификации.
noexcept(some-constant-expression-that-evaluates-to-false)
может быть опущен. Все остальные должны присутствовать во всех объявлениях.