rsmith added a comment. Thanks! Is this really the only case we were getting wrong? If so, great!
We should make sure we have test coverage for all the cases affected by P0692R1. Please add some complementary tests for the cases where diagnostics should still be produced. For example, in addition to testing: template<typename T, void (TestClass::*)()> class TemplateClass3 {}; template<typename T> class TemplateClass3<T, &TestClass::func> {}; ... please also test ... template<typename T> class TemplateClass3<T, &TestClass::func> varTemplate3{}; ... which we should diagnose, because that's a primary variable template definition, not a partial / explicit specialization or explicit instantiation. Please also add testcases for specializations / instantiations of function templates, variable templates, and for explicit specializations of members of class templates: template<typename T> struct X { struct A {}; void f(); enum E : int; static int var; }; class Y { using Z = int; }; template<> struct X<Y::Z>::A {}; template<> void X<Y::Z>::f() {} template<> enum X<Y::Z>::E : int {}; template<> int X<Y::Z>::var = 76; (It looks like we incorrectly reject the function and variable cases here, and presumably will still do so after this patch, so there's a little more work to be done before we can call P0692R1 complete.) Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D78404/new/ https://reviews.llvm.org/D78404 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits