noexcept
修飾符可以應用於lambda表達式嗎?如果是這樣,怎麼樣?使用noexcept作爲lambda修飾符或參數約束
可以將noexcept
作爲函數參數的約束嗎?例如,在下面的代碼中,其含義是回調函數必須是noexcept
?
//probably not valid code - I'm just trying to express the idea
void f_async(std::function<void (int) noexcept> callback) noexcept
{
...
}
這可以幾乎可以用下面的代碼來實現,但我不知道是否有使用類似上述的替代方式。
void f_async(std::function<void (int)> callback)
noexcept(callback(std::declval<int>()))
{
...
}
當然這裏的問題是,f_async
可以noexcept(false)
如果回調是noexcept(false)
- 我想要一個更強有力的聲明,f_async
是總是noexcept
,這意味着如果你使用noexcept
回調,這只是調用。
有趣的 - 我還沒有真正見過這個'的std :: enable_if'。看起來很有希望。 –
不錯的嘗試,但不工作的時候通過免費功能,在鏗鏘3.5 f_async。 –
http://rextester.com/RDIX55455 –