mirror of
https://github.com/boostorg/smart_ptr.git
synced 2025-07-31 05:07:21 +02:00
Add detail/sp_type_traits.hpp, sp_is_bounded_array
This commit is contained in:
28
include/boost/smart_ptr/detail/sp_type_traits.hpp
Normal file
28
include/boost/smart_ptr/detail/sp_type_traits.hpp
Normal file
@ -0,0 +1,28 @@
|
||||
#ifndef BOOST_SMART_PTR_DETAIL_SP_TYPE_TRAITS_HPP_INCLUDED
|
||||
#define BOOST_SMART_PTR_DETAIL_SP_TYPE_TRAITS_HPP_INCLUDED
|
||||
|
||||
// Copyright 2024 Peter Dimov
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// https://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace detail
|
||||
{
|
||||
|
||||
// std::is_bounded_array (C++20)
|
||||
|
||||
template<class T> struct sp_is_bounded_array: std::false_type
|
||||
{
|
||||
};
|
||||
|
||||
template<class T, std::size_t N> struct sp_is_bounded_array< T[N] >: std::true_type
|
||||
{
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
} // namespace boost
|
||||
|
||||
#endif // #ifndef BOOST_SMART_PTR_DETAIL_SP_TYPE_TRAITS_HPP_INCLUDED
|
@ -424,3 +424,5 @@ run sp_unordered_test.cpp ;
|
||||
|
||||
run sp_unique_ptr_test2.cpp ;
|
||||
run sp_move_only_deleter.cpp ;
|
||||
|
||||
run sp_is_bounded_array_test.cpp ;
|
||||
|
27
test/sp_is_bounded_array_test.cpp
Normal file
27
test/sp_is_bounded_array_test.cpp
Normal 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_bounded_array;
|
||||
|
||||
BOOST_TEST_TRAIT_FALSE(( sp_is_bounded_array<void> ));
|
||||
BOOST_TEST_TRAIT_FALSE(( sp_is_bounded_array<int> ));
|
||||
BOOST_TEST_TRAIT_FALSE(( sp_is_bounded_array<X> ));
|
||||
|
||||
BOOST_TEST_TRAIT_FALSE(( sp_is_bounded_array<int[]> ));
|
||||
BOOST_TEST_TRAIT_FALSE(( sp_is_bounded_array<X[]> ));
|
||||
|
||||
BOOST_TEST_TRAIT_TRUE(( sp_is_bounded_array<int[1]> ));
|
||||
BOOST_TEST_TRAIT_TRUE(( sp_is_bounded_array<int[7]> ));
|
||||
BOOST_TEST_TRAIT_TRUE(( sp_is_bounded_array<X[1]> ));
|
||||
BOOST_TEST_TRAIT_TRUE(( sp_is_bounded_array<X[7]> ));
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
Reference in New Issue
Block a user