https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72745
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- This is harder than you think, because the incomplete type error happens in the return type, so the function body is never instantiated and adding a static assertion there doesn't help.