[[noreturn]]函数指针

mai*_*n-- 7 c++ function-pointers clang c++11 noreturn

当我使用clang(version 3.4 (trunk 194574))编译时:

typedef void (* FunctionThatNeverReturns [[ noreturn ]])();
Run Code Online (Sandbox Code Playgroud)

我明白了:

error: 'noreturn' attribute only applies to functions and methods
Run Code Online (Sandbox Code Playgroud)

这让我感到惊讶,因为它与旧版本的clang完美搭配.

那么如何定义指向[[ noreturn ]]函数的指针呢?

我需要这个因为我在函数内部调用函数指针[[ noreturn ]],如果函数指针没有标记为noreturn,它显然会产生警告.

哦,这有效:

typedef void (* FunctionThatNeverReturns [[ gnu::noreturn ]])();
Run Code Online (Sandbox Code Playgroud)

但是没有独立于编译器的解决方案吗?

mai*_*n-- 0

正如评论中所指出的,这显然是标准所禁止的。