summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/expr
diff options
context:
space:
mode:
authorSaar Raz <saar@raz.email>2020-01-24 02:22:17 +0200
committerSaar Raz <saar@raz.email>2020-01-24 02:28:34 +0200
commit9f37a46d143b5cc481eed225a193cbfbddc2eade (patch)
treef5ad9c1c3e2d534603f24de6566f6e54c31f81c8 /clang/test/CXX/expr
parent2ec65e229314d468006998eaef7074b86ef7482d (diff)
downloadbcm5719-llvm-9f37a46d143b5cc481eed225a193cbfbddc2eade.tar.gz
bcm5719-llvm-9f37a46d143b5cc481eed225a193cbfbddc2eade.zip
[Concepts] Make constraint expressions unevaluated until satisfaction checking
As per P1980R0, constraint expressions are unevaluated operands, and their constituent atomic constraints only become constant evaluated during satisfaction checking. Change the evaluation context during parsing and instantiation of constraints to unevaluated. (cherry picked from commit 73eaf62463b4a29adf4194685af12d1a5d172987)
Diffstat (limited to 'clang/test/CXX/expr')
-rw-r--r--clang/test/CXX/expr/expr.prim/expr.prim.req/nested-requirement.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/test/CXX/expr/expr.prim/expr.prim.req/nested-requirement.cpp b/clang/test/CXX/expr/expr.prim/expr.prim.req/nested-requirement.cpp
index bc093a0fc50..b45b57f6b92 100644
--- a/clang/test/CXX/expr/expr.prim/expr.prim.req/nested-requirement.cpp
+++ b/clang/test/CXX/expr/expr.prim/expr.prim.req/nested-requirement.cpp
@@ -39,8 +39,9 @@ namespace std_example {
using dc1 = D_check<short>; // expected-error{{constraints not satisfied for class template 'D_check' [with T = short]}}
template<typename T>
- concept C2 = requires (T a) { // expected-note{{'a' declared here}}
+ concept C2 = requires (T a) {
requires sizeof(a) == 4; // OK
- requires a == 0; // expected-error{{constraint variable 'a' cannot be used in an evaluated context}}
+ requires a == 0; // expected-note{{because 'a == 0' would be invalid: constraint variable 'a' cannot be used in an evaluated context}}
};
+ static_assert(C2<int>); // expected-note{{because 'int' does not satisfy 'C2'}} expected-error{{static_assert failed}}
} \ No newline at end of file
OpenPOWER on IntegriCloud