O1_size_impl.hpp
Go to the documentation of this file.
1 
2 #ifndef BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
3 #define BOOST_MPL_O1_SIZE_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: O1_size_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 
18 #include <boost/mpl/long.hpp>
19 #include <boost/mpl/if.hpp>
25 
26 namespace boost { namespace mpl {
27 
28 // default implementation - returns 'Sequence::size' if sequence has a 'size'
29 // member, and -1 otherwise; conrete sequences might override it by
30 // specializing either the 'O1_size_impl' or the primary 'O1_size' template
31 
32 # if !BOOST_WORKAROUND(BOOST_MSVC, < 1300) \
33  && !BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3003))
34 
35 namespace aux {
36 template< typename Sequence > struct O1_size_impl
37  : Sequence::size
38 {
39 };
40 }
41 
42 template< typename Tag >
44 {
45  template< typename Sequence > struct apply
46 #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
47  : if_<
48  aux::has_size<Sequence>
49  , aux::O1_size_impl<Sequence>
50  , long_<-1>
51  >::type
52  {
53 #else
54  {
55  typedef typename if_<
56  aux::has_size<Sequence>
58  , long_<-1>
59  >::type type;
60 
61  BOOST_STATIC_CONSTANT(long, value =
62  (if_<
63  aux::has_size<Sequence>
65  , long_<-1>
66  >::type::value)
67  );
68 #endif
69  };
70 };
71 
72 # else // BOOST_MSVC
73 
74 template< typename Tag >
75 struct O1_size_impl
76 {
77  template< typename Sequence > struct apply
78  : long_<-1>
79  {
80  };
81 };
82 
83 # endif
84 
85 }}
86 
87 #endif // BOOST_MPL_O1_SIZE_IMPL_HPP_INCLUDED
long_
Definition: long_fwd.hpp:22
BOOST_STATIC_CONSTANT
#define BOOST_STATIC_CONSTANT(type, assignment)
Definition: suffix.hpp:394
boost::mpl::O1_size_impl
Definition: O1_size_impl.hpp:43
boost::type
Definition: type.hpp:14
boost
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
has_size.hpp
long.hpp
workaround.hpp
O1_size_fwd.hpp
msvc.hpp
forwarding.hpp
boost::mpl::O1_size_impl::apply
Definition: O1_size_impl.hpp:45
boost::mpl::if_
Definition: dmc/basic_bind.hpp:374
static_constant.hpp
if.hpp
boost::mpl::aux::O1_size_impl
Definition: O1_size_impl.hpp:36


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