https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104074
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- The following are accepted: struct f; template <void (f::*)(void)> class pfm; template <typename T> using u0 = pfm<&T::recycle>; template <int f::*> class pmv; template <typename T> using u1= pmv<&T::recycle>; template <int*> class ptr; template <typename T> using u2= ptr<&T::recycle>; So I don't see why auto would be special not accepting this here.