https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113110
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Jason Liam from comment #3) > (In reply to Andrew Pinski from comment #1) > > > I suspect this is either a bug or an extension for MSVC. > > Are you sure? I mean if you add another template parameter `U` to the second > parameter and use it then gcc starts accepting the code and using the more > specialized version. Demo:https://godbolt.org/z/W7Ma6c5Ts It is 3 compilers vs 1 here. Either there is some defect against the C++ standard or the odd one out has an issue ...