annotate gcc/testsuite/g++.dg/cpp1y/nontype1.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 // PR c++/91129 - wrong error with binary op in template argument.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 // { dg-do compile { target c++14 } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4 template<class T, T v>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 struct C
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 constexpr operator T() const { return v; }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 constexpr auto operator()() const { return v; }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11 template<class T, int N>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 struct A
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 template<int N>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 void foo ()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 A<int, C<int, 6>{}> a0;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 A<int, !C<int, 6>{}> a1;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 A<int, N / C<int, 6>{}> a2;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 A<int, N % C<int, 6>{}> a3;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 A<int, N * C<int, 6>{}> a4;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 A<int, N ^ C<int, 6>{}> a5;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 A<int, N | C<int, 6>{}> a6;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 A<int, N & C<int, 6>{}> a7;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 A<int, N + C<int, 6>{}> a8;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 A<int, N - C<int, 6>{}> a9;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 A<int, -C<int, 6>{}> a10;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 A<int, (N >> C<int, 6>{})> a11;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 A<int, N << C<int, 6>{}> a12;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 A<int, ~C<int, 6>{}> a13;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 A<int, N || C<int, 6>{}> a14;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 A<int, N && C<int, 6>{}> a15;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 A<int, N == C<int, 6>{}> a16;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 A<int, N != C<int, 6>{}> a17;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 int main()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 foo<10>();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 }