https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83145
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- This is affected by the -fnew-ttp-matching option, which is enabled by default for C++17 and disabled otherwise. You get the same error with C++14 if you use -fnew-tpp-matching, and it compiles with C++17 and -fno-new-ttp-matching I think the C++17 standard requires the new behaviour, so this isn't a bug.