aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp2a/consteval40.C
blob: 4d3ba20092b1e0a49c57c7df74152ab00d56cc72 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// PR c++/117501
// { dg-do run { target c++20 } }

constexpr int
twiddle (int i)
{
 if (__builtin_is_constant_evaluated ())
    return 3;
  return i;
}
struct S {
  constexpr S(int i) : i{twiddle (i)} {}
  int i;
};
struct Q {
  consteval Q(S s_) : s{s_, s_} {}
  S s[2];
};
int
main ()
{
  Q q(twiddle (42));
  if (q.s[0].i != 3 || q.s[1].i != 3)
    __builtin_abort ();
}