Подтвердить что ты не робот

С++ 11, спецификатор noexcept`, определение против объявления

Если объявленная функция имеет спецификатор noexcept (noexcept, noexcept(true), noexcept(false) или любой другой noexcept(expr), который оценивается как true или false), но он определен в другом месте, нужно ли специфицировать спецификатор noexcept в определении снова или только в его прямом объявлении?

4b9b3361

Ответ 1

[except.spec]/р4:

Если какое-либо объявление функции имеет спецификацию исключения, которая не является noexcept-спецификацией, допускающей все исключения, все деклараций, включая определение и любые явные специализация этой функции должна иметь совместимую Исключение-спецификации.

noexcept(some-constant-expression-that-evaluates-to-false) может быть опущен. Все остальные должны присутствовать во всех объявлениях.