Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp1y/pr70001.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// PR c++/70001 // { dg-do compile { target c++14 } } struct B { int a; constexpr B () : a (0) { } constexpr B (int x) : a (x) { } }; struct C { B c; constexpr C () : c (0) { } }; struct A { B b[1 << 4]; }; struct D { C d[1 << 4]; }; constexpr int foo (int a, int b) { A c; c.b[a].a += b; c.b[b].a += a; return c.b[0].a + c.b[a].a + c.b[b].a; } constexpr int bar (int a, int b) { D c; c.d[a].c.a += b; c.d[b].c.a += a; return c.d[0].c.a + c.d[a].c.a + c.d[b].c.a; } constexpr int d = foo (1, 2); constexpr int e = foo (0, 3); constexpr int f = foo (2, 4); constexpr int g = bar (1, 2); constexpr int h = bar (0, 3); constexpr int i = bar (2, 4); static_assert (d == 3 && e == 6 && f == 6, ""); static_assert (g == 3 && h == 6 && i == 6, "");