https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72756
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://gcc.gnu.org/bugzill | |a/show_bug.cgi?id=79083 Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Keywords| |accepts-invalid Last reconfirmed| |2021-08-02 --- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- Here is the full testcase (since it needs tested at instantation time): #include <stddef.h> template<size_t n> struct A{}; template<size_t n> struct tst { enum : size_t { m= n % 15 }; template<size_t p> void call( tst<p> const &t2 ) { A<t2.m> a; // 1 } }; int main(void) { tst<0> t; tst<1> t1; t.call(t1); } ------ CUT ---- Confirmed. Also related to PR 79083. Note: GCC, ICC and MSVC all accept the code clang rejects the code. Note they all accept the code without doing an instantation of the function though.