https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70077
--- Comment #1 from Michele Caini <michele.caini at gmail dot com> --- Actually, the same example does not compile on the web compiler previously mentioned. See http://coliru.stacked-crooked.com/a/81552252ead0d349 for further details. The error is a bit more meaningful: g++ -std=c++14 -O2 -Wall -pedantic -pthread main.cpp && ./a.out main.cpp:8:31: error: invalid use of incomplete type 'struct D' D() noexcept(noexcept(D{42})): B{42} { } ^ main.cpp:6:8: note: definition of 'struct D' is not complete until the closing brace struct D: public B { ^ Still, is it valid code? It looks valid to me, but it could be a corner case of the language, not sure about that honestly.