noexcept
修飾子をラムダ式に適用できますか?もしそうなら、どうですか?ラムダ修飾子またはパラメータ制約として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)
にできることである - 私はあなたがnoexcept
コールバックを使用する場合にのみ呼び出し可能です意味、f_async
は常にnoexcept
であることを強い声明を作りたいです。最初の質問に関しては
興味深い - 私は本当にこの前に 'のstd :: enable_if'を見ていません。期待しているようだ。 –
clang 3.5でf_asyncにフリー関数を渡すとうまくいきますが、うまくいきません。 –
http://rextester.com/RDIX55455 –