//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // template // struct array // { // // types: // typedef T& reference; // typedef const T& const_reference; // typedef implementation defined iterator; // typedef implementation defined const_iterator; // typedef T value_type; // typedef T* pointer; // typedef size_t size_type; // typedef ptrdiff_t difference_type; // typedef T value_type; // typedef std::reverse_iterator reverse_iterator; // typedef std::reverse_iterator const_reverse_iterator; #include #include #include #include "test_macros.h" template void test_iterators() { typedef std::iterator_traits ItT; typedef std::iterator_traits CItT; static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); } int main() { { typedef double T; typedef std::array C; static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); LIBCPP_STATIC_ASSERT((std::is_same::value), ""); LIBCPP_STATIC_ASSERT((std::is_same::value), ""); test_iterators(); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same >::value), ""); static_assert((std::is_same >::value), ""); static_assert((std::is_signed::value), ""); static_assert((std::is_unsigned::value), ""); static_assert((std::is_same::difference_type>::value), ""); static_assert((std::is_same::difference_type>::value), ""); } { typedef int* T; typedef std::array C; static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); LIBCPP_STATIC_ASSERT((std::is_same::value), ""); LIBCPP_STATIC_ASSERT((std::is_same::value), ""); test_iterators(); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same::value), ""); static_assert((std::is_same >::value), ""); static_assert((std::is_same >::value), ""); static_assert((std::is_signed::value), ""); static_assert((std::is_unsigned::value), ""); static_assert((std::is_same::difference_type>::value), ""); static_assert((std::is_same::difference_type>::value), ""); } }