annotate gcc/testsuite/g++.dg/concepts/diagnostic3.C @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 // { dg-do compile { target c++2a } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3 template<typename T>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 inline constexpr bool foo_v = false;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 template<typename T>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7 concept foo = (bool)(foo_v<T> | foo_v<T&>);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9 template<typename... Ts>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 requires (foo<Ts> && ...)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 bar() // { dg-message "with Ts = .int, char... evaluated to .false." }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 template<int>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 struct S { };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 template<int... Is>
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19 requires (foo<S<Is>> && ...)
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 baz() // { dg-message "with Is = .2, 3, 4... evaluated to .false." }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 { }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24 void
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 baz()
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 bar<int, char>(); // { dg-error "unsatisfied constraints" }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 baz<2,3,4>(); // { dg-error "unsatisfied constraints" }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29 }