5

次のコードをコンパイルしようとして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!");
^             ~~~~~~~~~~~~~~~

ここで何が欠けていますか?

4

1 に答える 1