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