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 –