xref: /llvm-project/clang/test/SemaTemplate/instantiate-array.cpp (revision c6e68daac0fa6e77a89f3ca72f266a528503dd1c)
19ca5c425SRichard Smith // RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
2*c6e68daaSAndy Gibbs // expected-no-diagnostics
35bd30395SAnders Carlsson 
45bd30395SAnders Carlsson #ifndef __GXX_EXPERIMENTAL_CXX0X__
55bd30395SAnders Carlsson #define __CONCAT(__X, __Y) __CONCAT1(__X, __Y)
65bd30395SAnders Carlsson #define __CONCAT1(__X, __Y) __X ## __Y
75bd30395SAnders Carlsson 
85bd30395SAnders Carlsson #define static_assert(__b, __m) \
95bd30395SAnders Carlsson   typedef int __CONCAT(__sa, __LINE__)[__b ? 1 : -1]
105bd30395SAnders Carlsson #endif
115bd30395SAnders Carlsson 
125bd30395SAnders Carlsson template <int N> class IntArray {
135bd30395SAnders Carlsson   int elems[N];
145bd30395SAnders Carlsson };
155bd30395SAnders Carlsson 
165bd30395SAnders Carlsson static_assert(sizeof(IntArray<10>) == sizeof(int) * 10, "Array size mismatch");
175bd30395SAnders Carlsson static_assert(sizeof(IntArray<1>) == sizeof(int) * 1, "Array size mismatch");
185bd30395SAnders Carlsson 
195bd30395SAnders Carlsson template <typename T> class TenElementArray {
205bd30395SAnders Carlsson   int elems[10];
215bd30395SAnders Carlsson };
225bd30395SAnders Carlsson 
235bd30395SAnders Carlsson static_assert(sizeof(TenElementArray<int>) == sizeof(int) * 10, "Array size mismatch");
245bd30395SAnders Carlsson 
255bd30395SAnders Carlsson template<typename T, int N> class Array {
265bd30395SAnders Carlsson   T elems[N];
275bd30395SAnders Carlsson };
285bd30395SAnders Carlsson 
295bd30395SAnders Carlsson static_assert(sizeof(Array<int, 10>) == sizeof(int) * 10, "Array size mismatch");
30