https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67070
--- Comment #11 from Andrew Sutton <andrew.n.sutton at gmail dot com> --- Most of the concerns in this issue have been resolved when concept satisfaction was defined in terms of normalized constraints in all contexts (requirements or otherwise). In particular. negation makes the constraint atomic, and we don't recursively normalize atoms. Negation is not a logical operator for the purpose of subsumption. Note that the case of overloading with the constraints !(C<A> && C<B>) vs (!C<A> || !C<B>) is ambiguous since the atomic constraint !(C<A> && C<B>) doesn't match either !C<A> and !C<B> (and vice versa). The concepts-cxx2a branch implements the new semantics.