18fbe78f6SDaniel Dunbar // RUN: %clang_cc1 -fsyntax-only -pedantic -verify %s 2ad2956c2SDouglas Gregor 3ad2956c2SDouglas Gregor template<int N> f()4ad2956c2SDouglas Gregorvoid f() { 5ad2956c2SDouglas Gregor int a[] = { 1, 2, 3, N }; 6ad2956c2SDouglas Gregor unsigned numAs = sizeof(a) / sizeof(int); 7ad2956c2SDouglas Gregor } 8ad2956c2SDouglas Gregor 9ad2956c2SDouglas Gregor template void f<17>(); 10ad2956c2SDouglas Gregor 11deebf6efSDouglas Gregor 12deebf6efSDouglas Gregor template<int N> f1()13deebf6efSDouglas Gregorvoid f1() { 14deebf6efSDouglas Gregor int a0[] = {}; // expected-warning{{zero}} 15deebf6efSDouglas Gregor int a1[] = { 1, 2, 3, N }; 16deebf6efSDouglas Gregor int a3[sizeof(a1)/sizeof(int) != 4? 1 : -1]; // expected-error{{negative}} 17deebf6efSDouglas Gregor } 18*de63d36fSRichard Smith 19*de63d36fSRichard Smith namespace PR13788 { 20*de63d36fSRichard Smith template <unsigned __N> 21*de63d36fSRichard Smith struct S { 22*de63d36fSRichard Smith int V; 23*de63d36fSRichard Smith }; 24*de63d36fSRichard Smith template <int N> foo()25*de63d36fSRichard Smith void foo() { 26*de63d36fSRichard Smith S<0> arr[N] = {{ 4 }}; 27*de63d36fSRichard Smith } 28*de63d36fSRichard Smith } 29