// 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(BOOST_NO_CXX11_CONSTEXPR) BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_NO_CXX11_CONSTEXPR is defined") #elif BOOST_WORKAROUND(BOOST_GCC, < 50000) BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_GCC < 50000") #else #define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) template void test1() { constexpr boost::array a = {{}}; STATIC_ASSERT( a[0] == 0 ); } template void test2() { constexpr boost::array a = {}; STATIC_ASSERT( a[0] == 0 ); STATIC_ASSERT( a[1] == 0 ); } template void test3() { constexpr boost::array a = {{ 1, 2, 3 }}; STATIC_ASSERT( a[0] == 1 ); STATIC_ASSERT( a[1] == 2 ); STATIC_ASSERT( a[2] == 3 ); } template void test4() { constexpr boost::array a = { 1, 2, 3, 4 }; STATIC_ASSERT( a[0] == 1 ); STATIC_ASSERT( a[1] == 2 ); STATIC_ASSERT( a[2] == 3 ); STATIC_ASSERT( a[3] == 4 ); } template void test5() { constexpr boost::array a = {{}}; (void)a; } template void test6() { constexpr boost::array a = {}; (void)a; } int main() { test1(); test2(); test3(); test4(); test5(); test6(); } #endif