PR c++/86728 - C variadic generic lambda.
[official-gcc.git] / gcc / testsuite / g++.dg / init / new37.C
blob9ecbfd7903d2e42b2b4a89a686a0e6f9b02b9aa9
1 // { dg-do compile }
3 void
4 nonconst(int n)
6   new (long[n][n]); // { dg-error "variable length|array size|not a constant|runtime bound" }
7   new long[n][n]; // { dg-error "variable length|array size|not a constant" }
10 template <typename T>
11 void *
12 callnew(int n)
14   return new long[n][T::n];
17 template <typename T>
18 void *
19 callnew_fail_1(int n)
21   return new long[n][T::n]; // { dg-error "variable length|array size|usable in a constant" }
24 template <typename T>
25 void *
26 callnew_fail_2()
28   return new long[T::n]; // { dg-error "size in array new" }
31 template <typename T>
32 void *
33 callnew_fail_3()
35   return new T[2][T::n]; // { dg-error "size of array has non-integral type|converted constant expression" }
38 struct T1 {
39   static int n;
42 struct T2 {
43   static const double n = 2; // { dg-error "23:'constexpr' needed" "" { target c++11 } }
44   // { dg-error "23:ISO C\\+\\+ forbids" "" { target c++98_only } .-1 }
47 struct T3 {
48   static const int n = 2;
51 struct T4 {
52   enum { n = 3 };
55 void
56 test_callnew(int n)
58   new long[0.2]; // { dg-error "integral or enumeration type" }
59   callnew_fail_1<T1>(n);
60   callnew_fail_2<T2>();
61   callnew_fail_3<T2>();
62   callnew<T3>(n);
63   callnew<T4>(n);