P0012R1에서 "예외 시스템을 시스템 유형에 포함 시키십시오."
이제는 noexcept
이 함수 유형의 일부가되는 것을 볼 수 있습니다.noexcept 함수가 여전히 C++ 17에서 throw되는 함수를 호출 할 수 있습니까?
이렇게하면 noexcept(true)
함수가 noexcept(false)
함수를 계속 호출 할 수 없게되는지 여부를 알 수 없습니다.
다음 코드가 여전히 C++ 17에 유효합니까? 함수 타입의 예외 사양 포함
는void will_throw() noexcept(false){
throw 0;
}
void will_not_throw() noexcept(true){
will_throw();
}
throw 함수가 noexcept 함수에서'try ... catch' 내부에 있다면 어떻게 될까요? –
'noexcept'는 함수가 _ throw되지 않고 _cannot_ throw가 아니라는 것을 의미하며, 실패한 경우의 penalty는 UB가 아니라'std :: terminate'를 호출하는 것입니다. 그렇습니다. 그 코드는 합법적입니다. – ildjarn