[Bug c++/94126] [concepts] suboptimal diagnostic when type after substitution is ill-formed
ppalka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Mar 29 17:36:50 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94126
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |FIXED
Target Milestone|--- |10.0
Status|UNCONFIRMED |RESOLVED
--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> ---
With current trunk and -fconcepts-diagnostics-depth=2, we now get:
disj.cc:13:15: error: static assertion failed
13 | static_assert(E<int>);
| ^~~~~~
disj.cc:13:15: note: constraints not satisfied
disj.cc:8:11: required for the satisfaction of ‘D<typename T::type>’ [with T
= int]
disj.cc:8:20: note: no operand of the disjunction is satisfied
8 | concept D = C<T> || C<const T>;
| ~~~~~^~~~~~~~~~~~~
disj.cc:8:15: note: the operand ‘C<T>’ is unsatisfied because
8 | concept D = C<T> || C<const T>;
| ^~~~~~~~~~~~~~~~~~
disj.cc:5:11: required for the satisfaction of ‘C<T>’ [with T = typename
T::type]
disj.cc:8:11: required for the satisfaction of ‘D<typename T::type>’ [with T
= int]
disj.cc:13:15: error: ‘int’ is not a class, struct, or union type
13 | static_assert(E<int>);
| ^~~~~~
disj.cc:8:23: note: the operand ‘C<const T>’ is unsatisfied because
8 | concept D = C<T> || C<const T>;
| ~~~~~~~~^~~~~~~~~~
disj.cc:5:11: required for the satisfaction of ‘C<const T>’ [with T =
typename T::type]
disj.cc:8:11: required for the satisfaction of ‘D<typename T::type>’ [with T
= int]
disj.cc:13:15: error: ‘int’ is not a class, struct, or union type
13 | static_assert(E<int>);
| ^~~~~~
So I'm considering this fixed.
More information about the Gcc-bugs
mailing list