distance.hpp
Go to the documentation of this file.
1 
2 #ifndef BOOST_MPL_DISTANCE_HPP_INCLUDED
3 #define BOOST_MPL_DISTANCE_HPP_INCLUDED
4 
5 // Copyright Aleksey Gurtovoy 2000-2004
6 //
7 // Distributed under the Boost Software License, Version 1.0.
8 // (See accompanying file LICENSE_1_0.txt or copy at
9 // http://www.boost.org/LICENSE_1_0.txt)
10 //
11 // See http://www.boost.org/libs/mpl for documentation.
12 
13 // $Id: distance.hpp 13472 2017-08-22 07:53:44Z richean $
14 // $Date: 2017-08-22 09:53:44 +0200 (Di, 22 Aug 2017) $
15 // $Revision: 13472 $
16 
18 #include <boost/mpl/iter_fold.hpp>
20 #include <boost/mpl/long.hpp>
21 #include <boost/mpl/next.hpp>
22 #include <boost/mpl/tag.hpp>
23 #include <boost/mpl/apply_wrap.hpp>
29 
30 
31 namespace boost { namespace mpl {
32 
33 // default implementation for forward/bidirectional iterators
34 template< typename Tag > struct distance_impl
35 {
36  template< typename First, typename Last > struct apply
37 #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
38  : aux::msvc_eti_base< typename iter_fold<
39  iterator_range<First,Last>
40  , mpl::long_<0>
41  , next<>
42  >::type >
43  {
44 #else
45  {
46  typedef typename iter_fold<
48  , mpl::long_<0>
49  , next<>
50  >::type type;
51 
52  BOOST_STATIC_CONSTANT(long, value =
53  (iter_fold<
55  , mpl::long_<0>
56  , next<>
57  >::type::value)
58  );
59 #endif
60  };
61 };
62 
63 template<
64  typename BOOST_MPL_AUX_NA_PARAM(First)
65  , typename BOOST_MPL_AUX_NA_PARAM(Last)
66  >
67 struct distance
68  : distance_impl< typename tag<First>::type >
69  ::template apply<First, Last>
70 {
71  BOOST_MPL_AUX_LAMBDA_SUPPORT(2, distance, (First, Last))
72 };
73 
75 
76 }}
77 
78 #endif // BOOST_MPL_DISTANCE_HPP_INCLUDED
boost::mpl::iterator_range
Definition: iterator_range.hpp:28
BOOST_STATIC_CONSTANT
#define BOOST_STATIC_CONSTANT(type, assignment)
Definition: suffix.hpp:394
iter_fold.hpp
iterator_range.hpp
boost::mpl::distance_impl
Definition: distance.hpp:34
BOOST_MPL_AUX_NA_PARAM
#define BOOST_MPL_AUX_NA_PARAM(param)
Definition: na_spec.hpp:152
na_spec.hpp
value_wknd.hpp
BOOST_MPL_AUX_NA_SPEC
#define BOOST_MPL_AUX_NA_SPEC(i, name)
Definition: na_spec.hpp:161
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
BOOST_MPL_AUX_LAMBDA_SUPPORT
#define BOOST_MPL_AUX_LAMBDA_SUPPORT(i, name, params)
Definition: lambda_support.hpp:22
long.hpp
tag.hpp
distance_fwd.hpp
apply_wrap.hpp
forwarding.hpp
msvc_eti_base.hpp
boost::mpl::apply
primary template (not a specialization!)
Definition: aux_/preprocessed/bcc/apply.hpp:163
boost::mpl::distance_impl::apply
Definition: distance.hpp:36
boost::mpl::distance
Definition: distance.hpp:67
next.hpp
boost::mpl::next
Definition: mpl/next_prior.hpp:29
boost::mpl::aux::msvc_eti_base
Definition: msvc_eti_base.hpp:55
static_constant.hpp
boost::mpl::aux::msvc_eti_base< iter_fold< iterator_range< First, Last >, mpl::long_< 0 >, next<> >::type >::type
iter_fold< iterator_range< First, Last >, mpl::long_< 0 >, next<> >::type type
Definition: msvc_eti_base.hpp:61
boost::mpl::iter_fold
Definition: iter_fold.hpp:32


sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:38:54