1 // PR c++/77830 2 // { dg-do compile { target c++14 } } 3 4 template <int N> 5 struct P 6 { 7 char arr[N][1]; 8 constexpr void foo (const char *, int); 9 }; 10 11 template <int N> 12 constexpr void foo(const char *,int i)13P<N>::foo (const char *, int i) 14 { 15 for (auto j = 0; j < 2; ++j) 16 arr[i][j] = true; 17 } 18 19 template <typename... T> 20 constexpr auto bar(T...a)21bar (T... a) 22 { 23 const char *s[]{a...}; 24 P<sizeof...(a)> p{}; 25 for (auto i = 0; i < sizeof...(a); ++i) 26 p.foo (s[i], i); // { dg-message "in .constexpr. expansion of " } 27 return p; 28 } 29 30 int main()31main () 32 { 33 constexpr auto a = bar ("", ""); // { dg-error "outside the bounds of array type|in .constexpr. expansion of " } 34 } 35