diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 1f92809..f002a89 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -59,6 +59,7 @@ compile array_get_test_cx.cpp ; # C++14 constexpr +compile array_assign_test_cx.cpp ; compile array_fill_test_cx.cpp ; compile array_eq_test_cx.cpp ; compile array_lt_test_cx.cpp ; diff --git a/test/array_assign_test_cx.cpp b/test/array_assign_test_cx.cpp new file mode 100644 index 0000000..1314d4a --- /dev/null +++ b/test/array_assign_test_cx.cpp @@ -0,0 +1,54 @@ +// 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_CXX14_CONSTEXPR) + +BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_NO_CXX11_CONSTEXPR is defined") + +#else + +#define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) + +template constexpr boost::array assigned( boost::array const& a1 ) +{ + boost::array a2 = {}; + + a2 = a1; + + return a2; +} + +template void test1() +{ + constexpr boost::array a1 = {{ 1, 2, 3, 4 }}; + constexpr boost::array a2 = assigned( a1 ); + + STATIC_ASSERT( a1[0] == a2[0] ); + STATIC_ASSERT( a1[1] == a2[1] ); + STATIC_ASSERT( a1[2] == a2[2] ); + STATIC_ASSERT( a1[3] == a2[3] ); +} + +template void test2() +{ + constexpr boost::array a1 = {}; + constexpr boost::array a2 = assigned( a1 ); + + (void)a1; + (void)a2; +} + +int main() +{ + test1(); + test2(); +} + +#endif