1762bb9d0ad20320b9f97a841dce57ba5e8e48b07Richard Smith// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++11
28e8fb3be5bd78f0564444eca02b404566a5f3b5dAndy Gibbs// expected-no-diagnostics
376b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
476b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson#ifndef __GXX_EXPERIMENTAL_CXX0X__
576b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson#define __CONCAT(__X, __Y) __CONCAT1(__X, __Y)
676b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson#define __CONCAT1(__X, __Y) __X ## __Y
776b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
876b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson#define static_assert(__b, __m) \
976b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson  typedef int __CONCAT(__sa, __LINE__)[__b ? 1 : -1]
1076b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson#endif
1176b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
1276b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlssontemplate <int N> class IntArray {
1376b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson  int elems[N];
1476b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson};
1576b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
1676b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlssonstatic_assert(sizeof(IntArray<10>) == sizeof(int) * 10, "Array size mismatch");
1776b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlssonstatic_assert(sizeof(IntArray<1>) == sizeof(int) * 1, "Array size mismatch");
1876b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
1976b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlssontemplate <typename T> class TenElementArray {
2076b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson  int elems[10];
2176b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson};
2276b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
2376b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlssonstatic_assert(sizeof(TenElementArray<int>) == sizeof(int) * 10, "Array size mismatch");
2476b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
2576b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlssontemplate<typename T, int N> class Array {
2676b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson  T elems[N];
2776b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson};
2876b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlsson
2976b1c842c3932d3f83b3abf999dd9622e3e5fb12Anders Carlssonstatic_assert(sizeof(Array<int, 10>) == sizeof(int) * 10, "Array size mismatch");
30