在P0012R1,「進行異常規格類型系統的一部分」,
我看到noexcept
正在成爲功能型的一部分。noexcept函數是否仍然可以調用一個拋出C++ 17的函數?
我不能說這是否會阻止noexcept(true)
函數仍然能夠調用noexcept(false)
函數。
以下代碼對於C++ 17仍然有效嗎?
void will_throw() noexcept(false){
throw 0;
}
void will_not_throw() noexcept(true){
will_throw();
}
如果throwing函數在noexcept函數中的'try ... catch'內,該怎麼辦? –
'noexcept'意味着一個函數_will_不會拋出,而不會拋出,而不遵守的懲罰是調用'std :: terminate',而不是UB。所以是的,該代碼是合法的。 – ildjarn