]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/iterator/iterator_traits.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
986b08f62aadaf5e5bf0c7edb8a0fc744c80ebd8
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / iterator / iterator_traits.hpp
1 // Copyright David Abrahams 2003.\r
2 // Distributed under the Boost Software License, Version 1.0. (See\r
3 // accompanying file LICENSE_1_0.txt or copy at\r
4 // http://www.boost.org/LICENSE_1_0.txt)\r
5 #ifndef ITERATOR_TRAITS_DWA200347_HPP\r
6 # define ITERATOR_TRAITS_DWA200347_HPP\r
7 \r
8 # include <boost/detail/iterator.hpp>\r
9 # include <boost/detail/workaround.hpp>\r
10 \r
11 namespace boost { \r
12 \r
13 // Unfortunately, g++ 2.95.x chokes when we define a class template\r
14 // iterator_category which has the same name as its\r
15 // std::iterator_category() function, probably due in part to the\r
16 // "std:: is visible globally" hack it uses.  Use\r
17 // BOOST_ITERATOR_CATEGORY to write code that's portable to older\r
18 // GCCs.\r
19 \r
20 # if BOOST_WORKAROUND(__GNUC__, <= 2)\r
21 #  define BOOST_ITERATOR_CATEGORY iterator_category_\r
22 # else\r
23 #  define BOOST_ITERATOR_CATEGORY iterator_category\r
24 # endif\r
25 \r
26 \r
27 template <class Iterator>\r
28 struct iterator_value\r
29 {\r
30     typedef typename boost::detail::iterator_traits<Iterator>::value_type type;\r
31 };\r
32   \r
33 template <class Iterator>\r
34 struct iterator_reference\r
35 {\r
36     typedef typename boost::detail::iterator_traits<Iterator>::reference type;\r
37 };\r
38   \r
39   \r
40 template <class Iterator>\r
41 struct iterator_pointer\r
42 {\r
43     typedef typename boost::detail::iterator_traits<Iterator>::pointer type;\r
44 };\r
45   \r
46 template <class Iterator>\r
47 struct iterator_difference\r
48 {\r
49     typedef typename boost::detail::iterator_traits<Iterator>::difference_type type;\r
50 };\r
51 \r
52 template <class Iterator>\r
53 struct BOOST_ITERATOR_CATEGORY\r
54 {\r
55     typedef typename boost::detail::iterator_traits<Iterator>::iterator_category type;\r
56 };\r
57 \r
58 # if BOOST_WORKAROUND(BOOST_MSVC, < 1300)\r
59 template <>\r
60 struct iterator_value<int>\r
61 {\r
62     typedef void type;\r
63 };\r
64   \r
65 template <>\r
66 struct iterator_reference<int>\r
67 {\r
68     typedef void type;\r
69 };\r
70 \r
71 template <>\r
72 struct iterator_pointer<int>\r
73 {\r
74     typedef void type;\r
75 };\r
76   \r
77 template <>\r
78 struct iterator_difference<int>\r
79 {\r
80     typedef void type;\r
81 };\r
82   \r
83 template <>\r
84 struct BOOST_ITERATOR_CATEGORY<int>\r
85 {\r
86     typedef void type;\r
87 };\r
88 # endif\r
89 \r
90 } // namespace boost::iterator\r
91 \r
92 #endif // ITERATOR_TRAITS_DWA200347_HPP\r