// Copyright 2025 Peter Dimov // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt #include #include #include #include #include #if defined(_MSC_VER) # pragma warning(disable: 4702) // unreachable code #endif template void test1() { boost::array a = {{}}; for( std::size_t i = 0; i < N; ++i ) { BOOST_TEST_EQ( a[i], T() ); } } template void test2() { boost::array a = {}; for( std::size_t i = 0; i < N; ++i ) { BOOST_TEST_EQ( a[i], T() ); } } template void test3() { boost::array a = {{ 1, 2, 3, 4 }}; T b[ 4 ] = { 1, 2, 3, 4 }; BOOST_TEST_ALL_EQ( a.begin(), a.end(), b + 0, b + 4 ); } template void test4() { boost::array a = { 1, 2, 3, 4 }; T b[ 4 ] = { 1, 2, 3, 4 }; BOOST_TEST_ALL_EQ( a.begin(), a.end(), b + 0, b + 4 ); } int main() { test1(); test1(); test1(); test1(); test1(); test1(); test2(); test2(); test2(); test2(); #if BOOST_WORKAROUND(BOOST_MSVC, < 1910) || BOOST_WORKAROUND(BOOST_GCC, < 50000) // = {} doesn't work for const T #else test2(); test2(); #endif test3(); test3(); test4(); test4(); return boost::report_errors(); }