diff --git a/include/boost/indirect_reference.hpp b/include/boost/indirect_reference.hpp new file mode 100755 index 0000000..51fedb1 --- /dev/null +++ b/include/boost/indirect_reference.hpp @@ -0,0 +1,40 @@ +// Copyright David Abrahams 2004. Use, modification and distribution is +// subject to the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +#ifndef INDIRECT_REFERENCE_DWA200415_HPP +# define INDIRECT_REFERENCE_DWA200415_HPP + +// dereferenceable_traits provides access to the value_type and +// reference of a Dereferenceable type. + +# include +# include +# include +# include + +namespace boost { + +namespace detail +{ + template + struct smart_ptr_reference + { + typedef typename P::element_type& type; + }; +} + +template +struct indirect_reference +{ + typedef typename remove_cv

::type stripped; + + typedef typename mpl::apply_if< + detail::is_incrementable + , iterator_reference + , detail::smart_ptr_reference + >::type type; +}; + +} // namespace boost + +#endif // INDIRECT_REFERENCE_DWA200415_HPP