[Bug c++/67070] [concepts] Concept with negation and disjunction not checked correctly

andrew.n.sutton at gmail dot com gcc-bugzilla@gcc.gnu.org
Wed Sep 4 14:58:00 GMT 2019


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.


More information about the Gcc-bugs mailing list