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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Another testcase for -std=c++20, this one is accepted by GCC 10 and up to
r11-2747 and rejected with r11-2748 and later:

namespace a {
template <typename b, typename c> constexpr bool d = __is_same_as(b, c);
namespace al {
template <typename b, typename c> concept am = d<b, c>;
}
template <typename b, typename c> concept an = al::am<c, b>;
}
namespace ap {
template <typename bf> struct e { using f = bf; };
template <typename bf> using bk = e<bf>::f;
}
namespace bd {
template <typename bf> concept cv = a::an<ap::bk<bf>, bf>;
template <typename> concept dg = requires { int(); };
}
namespace bd::ap {
template <cv g> struct h {
  static auto i() {}
  using j = g;
  using k = decltype(i);
  h(k);
  h(j, auto);
};
struct l {
  using k = int;
  l(k);
};
}
namespace bd {
struct C : ap::l {};
}
template <bd::cv g, bd::dg m> void n(g bz, m ignore) { bd::ap::h(bz, ignore); }
void o() {
  using bd::C;
  C p{0};
  int ignore;
  n(p, ignore);
}

Reply via email to