vector/aux_/item.hpp
Go to the documentation of this file.
1 
2 #ifndef BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
3 #define BOOST_MPL_VECTOR_AUX_ITEM_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: item.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 
17 #include <boost/mpl/long.hpp>
18 #include <boost/mpl/void.hpp>
19 #include <boost/mpl/next_prior.hpp>
23 
24 namespace boost { namespace mpl {
25 
26 #if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES)
27 
28 template<
29  typename T
30  , typename Base
31  , int at_front = 0
32  >
33 struct v_item
34  : Base
35 {
36  typedef typename Base::upper_bound_ index_;
37  typedef typename next<index_>::type upper_bound_;
38  typedef typename next<typename Base::size>::type size;
39  typedef Base base;
40  typedef v_item type;
41 
42  // agurt 10/sep/04: MWCW <= 9.3 workaround here and below; the compiler
43  // breaks if using declaration comes _before_ the new overload
44  static aux::type_wrapper<T> item_(index_);
45  using Base::item_;
46 };
47 
48 template<
49  typename T
50  , typename Base
51  >
52 struct v_item<T,Base,1>
53  : Base
54 {
55  typedef typename prior<typename Base::lower_bound_>::type index_;
56  typedef index_ lower_bound_;
57  typedef typename next<typename Base::size>::type size;
58  typedef Base base;
59  typedef v_item type;
60 
61  static aux::type_wrapper<T> item_(index_);
62  using Base::item_;
63 };
64 
65 // "erasure" item
66 template<
67  typename Base
68  , int at_front
69  >
70 struct v_mask
71  : Base
72 {
73  typedef typename prior<typename Base::upper_bound_>::type index_;
74  typedef index_ upper_bound_;
75  typedef typename prior<typename Base::size>::type size;
76  typedef Base base;
77  typedef v_mask type;
78 
79  static aux::type_wrapper<void_> item_(index_);
80  using Base::item_;
81 };
82 
83 template<
84  typename Base
85  >
86 struct v_mask<Base,1>
87  : Base
88 {
89  typedef typename Base::lower_bound_ index_;
90  typedef typename next<index_>::type lower_bound_;
91  typedef typename prior<typename Base::size>::type size;
92  typedef Base base;
93  typedef v_mask type;
94 
95  static aux::type_wrapper<void_> item_(index_);
96  using Base::item_;
97 };
98 
99 #endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES
100 
101 }}
102 
103 #endif // BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED
T
T
Definition: mem_fn_cc.hpp:25
ctps.hpp
next_prior.hpp
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
type_wrapper.hpp
long.hpp
Base
boost::mpl::prior::type
T::prior type
Definition: mpl/next_prior.hpp:40
boost::mpl::next::type
T::next type
Definition: mpl/next_prior.hpp:31
typeof.hpp
void.hpp


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