-
- Downloads
c++: constraints are unevaluated operands [PR99961]
According to [temp.concept]/6 and [temp.pre]/9, a concept definition and a requires clause are both unevaluated contexts, and hence satisfaction deals only with unevaluated operands, so we should set cp_unevaluated in these three situations. gcc/cp/ChangeLog: PR c++/99961 PR c++/99994 * constraint.cc (satisfy_normalized_constraints): Set cp_unevaluated. * parser.c (cp_parser_concept_definition): Likewise. (cp_parser_requires_clause_opt): Likewise. gcc/testsuite/ChangeLog: PR c++/99961 PR c++/99994 * g++.dg/cpp2a/concepts-uneval1.C: New test. * g++.dg/cpp2a/concepts-uneval2.C: New test.
Showing
- gcc/cp/constraint.cc 3 additions, 0 deletionsgcc/cp/constraint.cc
- gcc/cp/parser.c 6 additions, 0 deletionsgcc/cp/parser.c
- gcc/testsuite/g++.dg/cpp2a/concepts-uneval1.C 10 additions, 0 deletionsgcc/testsuite/g++.dg/cpp2a/concepts-uneval1.C
- gcc/testsuite/g++.dg/cpp2a/concepts-uneval2.C 8 additions, 0 deletionsgcc/testsuite/g++.dg/cpp2a/concepts-uneval2.C
Loading
Please register or sign in to comment