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