I am learning C++ using the books listed here. I wrote the following example(for purely academic reasons) that compiles with GCC but not with Clang and MSVC. Demo.
struct C {
static bool f() noexcept(!noexcept(C::f()))
{
return true;
}
};
As we can see here the above example compiles with gcc but not with msvc and clang.
So my question is which compiler is right here(if any).
GCC compiles this.
MSVC says:
<source>(2): fatal error C1202: recursive type or function dependency context too complex
Clang says:
<source>:2:40: error: exception specification is not available until end of class definition
static bool f() noexcept(!noexcept(C::f()))