PageRenderTime 40ms CodeModel.GetById 31ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/extlibs/Boost/include/boost/range/detail/const_iterator.hpp

https://bitbucket.org/hugoruscitti/pilascpp
C++ Header | 71 lines | 48 code | 11 blank | 12 comment | 0 complexity | c0083daf1e676a2a2a919dd97704bd82 MD5 | raw file
 1// Boost.Range library
 2//
 3//  Copyright Thorsten Ottosen 2003-2004. Use, modification and
 4//  distribution is subject to the Boost Software License, Version
 5//  1.0. (See accompanying file LICENSE_1_0.txt or copy at
 6//  http://www.boost.org/LICENSE_1_0.txt)
 7//
 8// For more information, see http://www.boost.org/libs/range/
 9//
10
11#ifndef BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
12#define BOOST_RANGE_DETAIL_CONST_ITERATOR_HPP
13
14#include <boost/range/detail/common.hpp>
15#include <boost/range/detail/remove_extent.hpp>
16
17//////////////////////////////////////////////////////////////////////////////
18// missing partial specialization  workaround.
19//////////////////////////////////////////////////////////////////////////////
20
21namespace boost 
22{
23    namespace range_detail 
24    {      
25        template< typename T >
26        struct range_const_iterator_;
27
28        template<>
29        struct range_const_iterator_<std_container_>
30        {
31            template< typename C >
32            struct pts
33            {
34                typedef BOOST_RANGE_DEDUCED_TYPENAME C::const_iterator type;
35            };
36        };
37
38        template<>
39        struct range_const_iterator_<std_pair_>
40        {
41            template< typename P >
42            struct pts
43            {
44                typedef BOOST_RANGE_DEDUCED_TYPENAME P::first_type type;
45            };
46        };
47
48
49        template<>
50        struct range_const_iterator_<array_>
51        { 
52            template< typename T >
53            struct pts
54            {
55                typedef const BOOST_RANGE_DEDUCED_TYPENAME 
56                    remove_extent<T>::type* type;
57            };
58        };
59    } 
60    
61    template< typename C >
62    class range_const_iterator
63    {
64        typedef BOOST_DEDUCED_TYPENAME range_detail::range<C>::type c_type;
65    public:
66        typedef BOOST_DEDUCED_TYPENAME range_detail::range_const_iterator_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type; 
67    };
68
69}
70
71#endif