修饰符可以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
就是always noexcept
,这意味着它只有在使用noexcept
回调时才可调用。