https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108234
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |INVALID --- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0127r2.html Looks like clang does not implement this paper correctly for reference types ... Modified testcase from that paper using reference types, C++17 should reject this while c++14 will accept it: template <const int &N> struct A; template <typename T, T N> int foo(A<N> *) = delete; void foo(void *); constexpr int t = 1; void bar(A<t> *p) { foo(p); // ill-formed; previously well-formed }