////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2014-2015. Distributed under 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) // // See http://www.boost.org/libs/container for documentation. // ////////////////////////////////////////////////////////////////////////////// #ifndef BOOST_MOVE_DETAIL_ITERATOR_TO_RAW_POINTER_HPP #define BOOST_MOVE_DETAIL_ITERATOR_TO_RAW_POINTER_HPP #ifndef BOOST_CONFIG_HPP # include #endif #if defined(BOOST_HAS_PRAGMA_ONCE) # pragma once #endif #include #include #include namespace boost { namespace movelib { namespace detail { template inline T* iterator_to_pointer(T* i) { return i; } template inline typename boost::movelib::iterator_traits::pointer iterator_to_pointer(const Iterator &i) { return i.operator->(); } template struct iterator_to_element_ptr { typedef typename boost::movelib::iterator_traits::pointer pointer; typedef typename boost::movelib::pointer_element::type element_type; typedef element_type* type; }; } //namespace detail { template inline typename boost::movelib::detail::iterator_to_element_ptr::type iterator_to_raw_pointer(const Iterator &i) { return ::boost::movelib::to_raw_pointer ( ::boost::movelib::detail::iterator_to_pointer(i) ); } } //namespace movelib { } //namespace boost { #endif //#ifndef BOOST_MOVE_DETAIL_ITERATOR_TO_RAW_POINTER_HPP