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>()))
{
...
}
もちろん、ここでの問題は、コールバックが次の場合に発生するf_async
可能性があることです-常により強力なステートメントを作成したい、つまり、コールバックを使用する場合にのみ呼び出し可能です。noexcept(false)
noexcept(false)
f_async
noexcept
noexcept