// 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_MSVC, < 1910) BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_MSVC < 1910") #else #define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) template void test1() { constexpr boost::array a = {}; STATIC_ASSERT( a.begin() == a.data() ); STATIC_ASSERT( a.end() == a.data() + N ); STATIC_ASSERT( a.cbegin() == a.data() ); STATIC_ASSERT( a.cend() == a.data() + N ); } template void test2() { constexpr boost::array a = {}; // iterator access is not constexpr for boost::array // it is for std::array, though, so we should change it STATIC_ASSERT( a.begin() == a.end() ); STATIC_ASSERT( a.cbegin() == a.cend() ); } int main() { // test1(); test1(); test1(); // test2(); } #endif