https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78301
--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> --- And std::declval<a*>()->inner() doesn't work either: ne.cc:5:59: error: invalid use of incomplete type ‘struct a’ void outer() const noexcept( noexcept( std::declval<a*>()->inner() ) ) { ^~ ne.cc:3:8: note: definition of ‘struct a’ is not complete until the closing brace struct a { ^ Which is PR 66256.