Add sp_is_unbounded_array

This commit is contained in:
Peter Dimov
2024-10-06 19:58:40 +03:00
parent 90fd5a1fc9
commit 7f880bc205
3 changed files with 38 additions and 0 deletions

View File

@@ -22,6 +22,16 @@ template<class T, std::size_t N> struct sp_is_bounded_array< T[N] >: std::true_t
{
};
// std::is_unbounded_array (C++20)
template<class T> struct sp_is_unbounded_array: std::false_type
{
};
template<class T> struct sp_is_unbounded_array< T[] >: std::true_type
{
};
} // namespace detail
} // namespace boost

View File

@@ -426,3 +426,4 @@ run sp_unique_ptr_test2.cpp ;
run sp_move_only_deleter.cpp ;
run sp_is_bounded_array_test.cpp ;
run sp_is_unbounded_array_test.cpp ;

View File

@@ -0,0 +1,27 @@
// Copyright 2024 Peter Dimov
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt
#include <boost/smart_ptr/detail/sp_type_traits.hpp>
#include <boost/core/lightweight_test_trait.hpp>
struct X;
int main()
{
using boost::detail::sp_is_unbounded_array;
BOOST_TEST_TRAIT_FALSE(( sp_is_unbounded_array<void> ));
BOOST_TEST_TRAIT_FALSE(( sp_is_unbounded_array<int> ));
BOOST_TEST_TRAIT_FALSE(( sp_is_unbounded_array<X> ));
BOOST_TEST_TRAIT_TRUE(( sp_is_unbounded_array<int[]> ));
BOOST_TEST_TRAIT_TRUE(( sp_is_unbounded_array<X[]> ));
BOOST_TEST_TRAIT_FALSE(( sp_is_unbounded_array<int[1]> ));
BOOST_TEST_TRAIT_FALSE(( sp_is_unbounded_array<int[7]> ));
BOOST_TEST_TRAIT_FALSE(( sp_is_unbounded_array<X[1]> ));
BOOST_TEST_TRAIT_FALSE(( sp_is_unbounded_array<X[7]> ));
return boost::report_errors();
}