From d2c295b85fdf851c41804d52f5b528c965a7f05d Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sun, 26 Jan 2025 05:53:09 +0200 Subject: [PATCH] Add array_access_test_cx2.cpp --- test/Jamfile.v2 | 1 + test/array_access_test_cx2.cpp | 45 ++++++++++++++++++++++++++++++++++ test/array_assign_test_cx.cpp | 2 +- test/array_fill_test_cx.cpp | 2 +- 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 test/array_access_test_cx2.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index f002a89..2e0ecb1 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -60,6 +60,7 @@ compile array_get_test_cx.cpp ; # C++14 constexpr compile array_assign_test_cx.cpp ; +compile array_access_test_cx2.cpp ; compile array_fill_test_cx.cpp ; compile array_eq_test_cx.cpp ; compile array_lt_test_cx.cpp ; diff --git a/test/array_access_test_cx2.cpp b/test/array_access_test_cx2.cpp new file mode 100644 index 0000000..9e00fe0 --- /dev/null +++ b/test/array_access_test_cx2.cpp @@ -0,0 +1,45 @@ +// 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_CXX14_CONSTEXPR is defined") + +#else + +#define STATIC_ASSERT(...) static_assert(__VA_ARGS__, #__VA_ARGS__) + +template constexpr boost::array modified( boost::array a1 ) +{ + a1.front() = 1; + a1[ 1 ] = 2; + a1.at( 2 ) = 3; + a1.back() = 4; + + return a1; +} + +template void test1() +{ + constexpr boost::array a1 = {}; + constexpr boost::array a2 = modified( a1 ); + + STATIC_ASSERT( a2[0] == 1 ); + STATIC_ASSERT( a2[1] == 2 ); + STATIC_ASSERT( a2[2] == 3 ); + STATIC_ASSERT( a2[3] == 4 ); +} + +int main() +{ + test1(); +} + +#endif diff --git a/test/array_assign_test_cx.cpp b/test/array_assign_test_cx.cpp index 1314d4a..ce8031c 100644 --- a/test/array_assign_test_cx.cpp +++ b/test/array_assign_test_cx.cpp @@ -10,7 +10,7 @@ #if defined(BOOST_NO_CXX14_CONSTEXPR) -BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_NO_CXX11_CONSTEXPR is defined") +BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_NO_CXX14_CONSTEXPR is defined") #else diff --git a/test/array_fill_test_cx.cpp b/test/array_fill_test_cx.cpp index c0c8d97..81d4bc1 100644 --- a/test/array_fill_test_cx.cpp +++ b/test/array_fill_test_cx.cpp @@ -10,7 +10,7 @@ #if defined(BOOST_NO_CXX14_CONSTEXPR) -BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_NO_CXX11_CONSTEXPR is defined") +BOOST_PRAGMA_MESSAGE("Test skipped because BOOST_NO_CXX14_CONSTEXPR is defined") #else