view gcc/testsuite/g++.dg/cpp1y/pr77830.C @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
line wrap: on
line source

// PR c++/77830
// { dg-do compile { target c++14 } }

template <int N>
struct P
{
  char arr[N][1];
  constexpr void foo (const char *, int);
};

template <int N>
constexpr void
P<N>::foo (const char *, int i)
{
  for (auto j = 0; j < 2; ++j)
    arr[i][j] = true;		// { dg-error "outside the bounds of array type" }
}

template <typename... T>
constexpr auto
bar (T... a)
{
  const char *s[]{a...};
  P<sizeof...(a)> p{};
  for (auto i = 0; i < sizeof...(a); ++i)
    p.foo (s[i], i); // { dg-message "in .constexpr. expansion of " }
  return p;
}

int
main ()
{
  constexpr auto a = bar ("", "");	// { dg-message "in .constexpr. expansion of " }
}