]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/doc/src/refmanual/distance.rst
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / mpl / doc / src / refmanual / distance.rst
1 .. Iterators/Iterator Metafunctions//distance |20
2
3 distance
4 ========
5
6 Synopsis
7 --------
8
9 .. parsed-literal::
10
11 template<
12 typename First
13 , typename Last
14 >
15 struct distance
16 {
17 typedef |unspecified| type;
18 };
19
20
21
22 Description
23 -----------
24
25 Returns the distance between ``First`` and ``Last`` iterators, that is, an
26 |Integral Constant| ``n`` such that ``advance<First,n>::type`` is
27 identical to ``Last``.
28
29
30 Header
31 ------
32
33 .. parsed-literal::
34
35 #include <boost/mpl/distance.hpp>
36
37
38 Parameters
39 ----------
40
41 +---------------+---------------------------+-----------------------------------+
42 | Parameter | Requirement | Description |
43 +===============+===========================+===================================+
44 | ``First``, | |Forward Iterator| | Iterators to compute a |
45 | ``Last`` | | distance between. |
46 +---------------+---------------------------+-----------------------------------+
47
48 Model Of
49 --------
50
51 |Tag Dispatched Metafunction|
52
53
54 Expression semantics
55 --------------------
56
57 For any |Forward Iterator|\ s ``first`` and ``last``:
58
59 .. parsed-literal::
60
61 typedef distance<first,last>::type n;
62
63 :Return type:
64 |Integral Constant|.
65
66 :Precondition:
67 [``first``, ``last``) is a valid range.
68
69 :Semantics:
70 Equivalent to
71
72 .. parsed-literal::
73
74 typedef iter_fold<
75 iterator_range<first,last>
76 , long_<0>
77 , next<_1>
78 >::type n;
79
80
81 :Postcondition:
82 ``is_same< advance<first,n>::type, last >::value == true``.
83
84
85 Complexity
86 ----------
87
88 Amortized constant time if ``first`` and ``last`` are |Random Access Iterator|\ s,
89 otherwise linear time.
90
91
92 Example
93 -------
94
95 .. parsed-literal::
96
97 typedef range_c<int,0,10>::type range;
98 typedef begin<range>::type first;
99 typedef end<range>::type last;
100
101 BOOST_MPL_ASSERT_RELATION( (distance<first,last>::value), ==, 10);
102
103
104 See also
105 --------
106
107 |Iterators|, |Tag Dispatched Metafunction|, |advance|, |next|, |prior|
108
109
110 .. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams
111 Distributed under the Boost Software License, Version 1.0. (See accompanying
112 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)