Added indirect_reference_t alias.

This commit is contained in:
Andrey Semashev 2025-02-07 01:30:16 +03:00
parent 8998179e9d
commit e446c6e05c

View File

@ -1,5 +1,5 @@
#ifndef INDIRECT_REFERENCE_DWA200415_HPP
#define INDIRECT_REFERENCE_DWA200415_HPP
#ifndef BOOST_INDIRECT_REFERENCE_DWA200415_HPP
#define BOOST_INDIRECT_REFERENCE_DWA200415_HPP
//
// Copyright David Abrahams 2004. Use, modification and distribution is
@ -11,19 +11,19 @@
// http://www.boost.org/libs/iterator/doc/pointee.html
//
#include <type_traits>
#include <boost/detail/is_incrementable.hpp>
#include <boost/iterator/iterator_traits.hpp>
#include <boost/pointee.hpp>
#include <type_traits>
namespace boost {
namespace detail {
template< typename P >
struct smart_ptr_reference
{
using type = typename boost::pointee<P>::type&;
using type = boost::pointee_t< P >&;
};
} // namespace detail
@ -31,13 +31,16 @@ struct smart_ptr_reference
template< typename P >
struct indirect_reference :
std::conditional<
detail::is_incrementable<P>::value,
iterator_reference<P>,
detail::smart_ptr_reference<P>
detail::is_incrementable< P >::value,
iterator_reference< P >,
detail::smart_ptr_reference< P >
>::type
{
};
template< typename P >
using indirect_reference_t = typename indirect_reference< P >::type;
} // namespace boost
#endif // INDIRECT_REFERENCE_DWA200415_HPP
#endif // BOOST_INDIRECT_REFERENCE_DWA200415_HPP