lambda表达式可以使用 noexcept
修饰符吗?如果是,如何使用?
函数参数可以被限制为 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>()))
{
...
}
当然,这里的问题在于如果回调函数是noexcept(false)
,则f_async
可能会是noexcept(false)
- 我想要更明确地表达f_async
始终是noexcept
,这意味着只有在使用noexcept
回调时才能调用它。
std::enable_if
。看起来很有前途。 - Timothy Shields