1 | // (C) Copyright David Abrahams 2002. |
2 | // Distributed under the Boost Software License, Version 1.0. (See |
3 | // accompanying file LICENSE_1_0.txt or copy at |
4 | // http://www.boost.org/LICENSE_1_0.txt) |
5 | |
6 | #ifndef ITERATOR_DWA122600_HPP_ |
7 | #define ITERATOR_DWA122600_HPP_ |
8 | |
9 | // This header is obsolete and will be deprecated. |
10 | |
11 | #include <iterator> |
12 | #if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) |
13 | #include <cstddef> |
14 | #endif |
15 | |
16 | namespace boost |
17 | { |
18 | |
19 | namespace detail |
20 | { |
21 | |
22 | using std::iterator_traits; |
23 | using std::distance; |
24 | |
25 | #if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) |
26 | // std::distance from stlport with Oracle compiler 12.4 and 12.5 fails to deduce template parameters |
27 | // when one of the arguments is an array and the other one is a pointer. |
28 | template< typename T, std::size_t N > |
29 | inline typename std::iterator_traits< T* >::difference_type distance(T (&left)[N], T* right) |
30 | { |
31 | return std::distance(static_cast< T* >(left), right); |
32 | } |
33 | #endif |
34 | |
35 | } // namespace detail |
36 | |
37 | } // namespace boost |
38 | |
39 | #endif // ITERATOR_DWA122600_HPP_ |
40 | |