Спецификация исключения при переопределении виртуальной функции?

Если класс наследуется от другого и переопределяет виртуальную функцию, как спецификация исключения для производной (переопределенной) функции связана с базовой функцией?

Это должно быть, по крайней мере, как ограничительное? правильно? или других?

Ответы

Ответ 1

Да, он должен быть по крайней мере как ограничительный (§15.4/3):

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

Ответ 2

Это $15.4 с .5 в http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf: "Если виртуальная функция имеет спецификацию исключения, все декларации, включая определение любой функции, которая переопределяет эту виртуальную функцию в любом производном классе, разрешают только исключения, разрешенные исключение - спецификация виртуальной функции базового класса "