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