aux_/begin_end_impl.hpp
Go to the documentation of this file.
1 
2 #ifndef BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
3 #define BOOST_MPL_AUX_BEGIN_END_IMPL_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: begin_end_impl.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 
19 #include <boost/mpl/void.hpp>
20 #include <boost/mpl/eval_if.hpp>
22 #include <boost/mpl/aux_/na.hpp>
25 
26 namespace boost { namespace mpl {
27 
28 
29 namespace aux {
30 
31 template< typename Sequence >
32 struct begin_type
33 {
34  typedef typename Sequence::begin type;
35 };
36 template< typename Sequence >
37 struct end_type
38 {
39  typedef typename Sequence::end type;
40 };
41 
42 }
43 
44 // default implementation; conrete sequences might override it by
45 // specializing either the 'begin_impl/end_impl' or the primary
46 // 'begin/end' templates
47 
48 template< typename Tag >
49 struct begin_impl
50 {
51  template< typename Sequence > struct apply
52  {
55  };
56 };
57 
58 template< typename Tag >
59 struct end_impl
60 {
61  template< typename Sequence > struct apply
62  {
65  };
66 };
67 
68 // specialize 'begin_trait/end_trait' for two pre-defined tags
69 
70 # define AUX778076_IMPL_SPEC(name, tag, result) \
71 template<> \
72 struct name##_impl<tag> \
73 { \
74  template< typename Sequence > struct apply \
75  { \
76  typedef result type; \
77  }; \
78 }; \
79 
80 
81 // a sequence with nested 'begin/end' typedefs; just query them
82 AUX778076_IMPL_SPEC(begin, nested_begin_end_tag, typename Sequence::begin)
83 AUX778076_IMPL_SPEC(end, nested_begin_end_tag, typename Sequence::end)
84 
85 // if a type 'T' does not contain 'begin/end' or 'tag' members
86 // and doesn't specialize either 'begin/end' or 'begin_impl/end_impl'
87 // templates, then we end up here
88 AUX778076_IMPL_SPEC(begin, non_sequence_tag, void_)
89 AUX778076_IMPL_SPEC(end, non_sequence_tag, void_)
92 
93 # undef AUX778076_IMPL_SPEC
94 
95 
98 
99 }}
100 
101 #endif // BOOST_MPL_AUX_BEGIN_END_IMPL_HPP_INCLUDED
void_
Definition: void.hpp:29
na
Definition: na_fwd.hpp:22
boost::mpl::end_impl
Definition: aux_/begin_end_impl.hpp:59
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
boost::mpl::aux::begin_type::type
Sequence::begin type
Definition: aux_/begin_end_impl.hpp:34
begin_end_fwd.hpp
na.hpp
AUX778076_IMPL_SPEC
#define AUX778076_IMPL_SPEC(name, tag, result)
Definition: aux_/begin_end_impl.hpp:70
sequence_tag_fwd.hpp
boost::foreach_detail_::begin
auto_any< BOOST_DEDUCED_TYPENAME foreach_iterator< T, C >::type > begin(auto_any_t col, type2type< T, C > *, boost::mpl::true_ *)
Definition: foreach.hpp:660
boost::mpl::end_impl::apply::type
eval_if< aux::has_begin< Sequence, true_ >, aux::end_type< Sequence >, void_ >::type type
Definition: aux_/begin_end_impl.hpp:64
boost::mpl::begin_impl::apply::type
eval_if< aux::has_begin< Sequence, true_ >, aux::begin_type< Sequence >, void_ >::type type
Definition: aux_/begin_end_impl.hpp:54
boost::mpl::end_impl::apply
Definition: aux_/begin_end_impl.hpp:61
boost::mpl::begin_impl
Definition: aux_/begin_end_impl.hpp:49
boost::foreach_detail_::end
auto_any< BOOST_DEDUCED_TYPENAME foreach_iterator< T, C >::type > end(auto_any_t col, type2type< T, C > *, boost::mpl::true_ *)
Definition: foreach.hpp:700
boost::mpl::aux::end_type
Definition: aux_/begin_end_impl.hpp:37
eti.hpp
has_begin.hpp
eval_if.hpp
boost::mpl::aux::end_type::type
Sequence::end type
Definition: aux_/begin_end_impl.hpp:39
boost::mpl::eval_if
Definition: gcc/basic_bind.hpp:408
void.hpp
boost::mpl::begin_impl::apply
Definition: aux_/begin_end_impl.hpp:51
boost::mpl::aux::begin_type
Definition: aux_/begin_end_impl.hpp:32
traits_lambda_spec.hpp
BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL
#define BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC_IMPL(i, trait)
Definition: traits_lambda_spec.hpp:24


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