https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62255

--- Comment #8 from Jason Merrill <jason at gcc dot gnu.org> ---
And here's a reduced testcase that GCC and EDG reject, but clang accepts.

template <typename T> struct Test {
  template <typename X> static void check(typename X::Undefined *);
  template <typename> static int &check(...);
  static const int value = sizeof (check<T>());
};
template <int> struct Sink { };
template <typename T> struct Base : Sink<Test<T>::value> {};
template <typename T> class Derived : Base<Derived<T> > {};

int i[Test<Derived<int> >::value];

Reply via email to