次のコードをコンパイルしようとしてclang++ -std=c++11 -cいますが、失敗します:
void g() noexcept {}
template <typename Func>
void f(Func && func) noexcept(noexcept(func()))
{ static_assert(noexcept(func()), "func()"); } // No error!
void h() { f(&g); } // No error!
static_assert(noexcept(f(&g)), "Error!");
Clang 3.4.2 で表示されるエラー メッセージは次のとおりです。
test.h:9:1: error: static_assert failed "Error!"
static_assert(noexcept(f(&g)), "Error!");
^ ~~~~~~~~~~~~~~~
ここで何が欠けていますか?