Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:51:17

0001 // Boost.Range library
0002 //
0003 //  Copyright Thorsten Ottosen 2003-2004. Use, modification and
0004 //  distribution is subject to the Boost Software License, Version
0005 //  1.0. (See accompanying file LICENSE_1_0.txt or copy at
0006 //  http://www.boost.org/LICENSE_1_0.txt)
0007 //
0008 // For more information, see http://www.boost.org/libs/range/
0009 //
0010 
0011 #ifndef BOOST_RANGE_DIFFERENCE_TYPE_HPP
0012 #define BOOST_RANGE_DIFFERENCE_TYPE_HPP
0013 
0014 #if defined(_MSC_VER)
0015 # pragma once
0016 #endif
0017 
0018 #include <boost/mpl/and.hpp>
0019 #include <boost/range/config.hpp>
0020 #include <boost/range/iterator.hpp>
0021 #include <boost/range/has_range_iterator.hpp>
0022 #include <boost/iterator/iterator_traits.hpp>
0023 #include <boost/type_traits/remove_reference.hpp>
0024 
0025 namespace boost
0026 {
0027     namespace range_detail
0028     {
0029         template< class T, bool B = has_type<range_iterator<T> >::value >
0030         struct range_difference
0031         { };
0032 
0033         template< class T >
0034         struct range_difference<T, true>
0035           : iterator_difference<
0036                 BOOST_DEDUCED_TYPENAME range_iterator<T>::type
0037             >
0038         { };
0039     }
0040 
0041     template< class T >
0042     struct range_difference
0043       : range_detail::range_difference<BOOST_DEDUCED_TYPENAME remove_reference<T>::type>
0044     { };
0045 }
0046 
0047 #endif