https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80981
--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Martin Liška from comment #1) > Clang and older versions of GCC do accept that. view-source:https://gcc.gnu.org/gcc-7/porting_to.html#hypothetical-instantiation The error is entirely correct, there is no way a<>::b<> can ever be instantiated to form a valid function, because b(a--) doesn't say which b it means.