https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68093
--- Comment #1 from Eric Niebler <eric.niebler at gmail dot com> --- Still happens on trunk, 2 years later: template <class T> concept bool True = true; template <class T> struct S { friend bool operator==(S, int) requires True<T> { return true; } friend bool operator==(S, int) requires !True<T> { return true; } }; int main() { S<int> s; } :-(