|
@@ -21,12 +21,26 @@
|
|
|
|
|
|
#include "test_macros.h"
|
|
|
|
|
|
+
|
|
|
+template <class T, size_t Size>
|
|
|
+struct MyArray {
|
|
|
+ T elems[Size];
|
|
|
+};
|
|
|
+
|
|
|
template <class T, size_t Size>
|
|
|
void test() {
|
|
|
typedef T CArrayT[Size == 0 ? 1 : Size];
|
|
|
typedef std::array<T, Size> ArrayT;
|
|
|
- static_assert(sizeof(CArrayT) == sizeof(ArrayT), "");
|
|
|
- static_assert(TEST_ALIGNOF(CArrayT) == TEST_ALIGNOF(ArrayT), "");
|
|
|
+ typedef MyArray<T, Size == 0 ? 1 : Size> MyArrayT;
|
|
|
+ static_assert(sizeof(ArrayT) == sizeof(CArrayT), "");
|
|
|
+ static_assert(sizeof(ArrayT) == sizeof(MyArrayT), "");
|
|
|
+ static_assert(TEST_ALIGNOF(ArrayT) == TEST_ALIGNOF(MyArrayT), "");
|
|
|
+#if defined(_LIBCPP_VERSION)
|
|
|
+ ArrayT a;
|
|
|
+ ((void)a);
|
|
|
+ static_assert(sizeof(ArrayT) == sizeof(a.__elems_), "");
|
|
|
+ static_assert(TEST_ALIGNOF(ArrayT) == __alignof__(a.__elems_), "");
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
template <class T>
|
|
@@ -44,6 +58,8 @@ struct TEST_ALIGNAS(TEST_ALIGNOF(std::max_align_t) * 2) TestType2 {
|
|
|
char data[1000];
|
|
|
};
|
|
|
|
|
|
+//static_assert(sizeof(void*) == 4, "");
|
|
|
+
|
|
|
int main() {
|
|
|
test_type<char>();
|
|
|
test_type<int>();
|