void method1() noexcept(noexcept(strProcessor(""))) { // Second 'noexcept' ^^^^^^^^^ ^
Первый - это спецификатор
noexcept
, который указывает, является лиmethod1()
noexcept .Вложенные один является
noexcept
оператором , который проверяет, является лиstrProcessor()
noexcept при вызове с""
.Второй случай немного tricky:
Type
все еще не завершен в точке, в которой мы хотели бы использоватьmethod1()
внутриnoexcept
. Я пришел к следующему обходному пути, злоупотребляя указателем-членом:void method2() noexcept(noexcept( (std::declval
().*&Type::method1)() )) {}; Однако я не думаю, что есть случай, когда вы могли бы только вывести
method2()
noexcept из спецификацииmethod1()
.