修饰符可以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回调时才可调用。