// 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 " }
}
