annotate gcc/testsuite/g++.dg/cpp1y/pr77830.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // PR c++/77830
kono
parents:
diff changeset
2 // { dg-do compile { target c++14 } }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 template <int N>
kono
parents:
diff changeset
5 struct P
kono
parents:
diff changeset
6 {
kono
parents:
diff changeset
7 char arr[N][1];
kono
parents:
diff changeset
8 constexpr void foo (const char *, int);
kono
parents:
diff changeset
9 };
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 template <int N>
kono
parents:
diff changeset
12 constexpr void
kono
parents:
diff changeset
13 P<N>::foo (const char *, int i)
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 for (auto j = 0; j < 2; ++j)
kono
parents:
diff changeset
16 arr[i][j] = true;
kono
parents:
diff changeset
17 }
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 template <typename... T>
kono
parents:
diff changeset
20 constexpr auto
kono
parents:
diff changeset
21 bar (T... a)
kono
parents:
diff changeset
22 {
kono
parents:
diff changeset
23 const char *s[]{a...};
kono
parents:
diff changeset
24 P<sizeof...(a)> p{};
kono
parents:
diff changeset
25 for (auto i = 0; i < sizeof...(a); ++i)
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
26 p.foo (s[i], i); // { dg-message "in .constexpr. expansion of " }
111
kono
parents:
diff changeset
27 return p;
kono
parents:
diff changeset
28 }
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 int
kono
parents:
diff changeset
31 main ()
kono
parents:
diff changeset
32 {
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
33 constexpr auto a = bar ("", ""); // { dg-error "outside the bounds of array type|in .constexpr. expansion of " }
111
kono
parents:
diff changeset
34 }