]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/boost/mpl/aux_/contains_impl.hpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / boost / mpl / aux_ / contains_impl.hpp
1
2 #ifndef BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
3 #define BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED
4
5 // Copyright Eric Friedman 2002
6 // Copyright Aleksey Gurtovoy 2004
7 //
8 // Distributed under the Boost Software License, Version 1.0.
9 // (See accompanying file LICENSE_1_0.txt or copy at
10 // http://www.boost.org/LICENSE_1_0.txt)
11 //
12 // See http://www.boost.org/libs/mpl for documentation.
13
14 // $Id$
15 // $Date$
16 // $Revision$
17
18 #include <boost/mpl/contains_fwd.hpp>
19 #include <boost/mpl/begin_end.hpp>
20 #include <boost/mpl/find.hpp>
21 #include <boost/mpl/not.hpp>
22 #include <boost/mpl/aux_/traits_lambda_spec.hpp>
23 #include <boost/mpl/aux_/config/forwarding.hpp>
24 #include <boost/mpl/aux_/config/static_constant.hpp>
25
26 #include <boost/type_traits/is_same.hpp>
27
28 namespace boost { namespace mpl {
29
30 template< typename Tag >
31 struct contains_impl
32 {
33 template< typename Sequence, typename T > struct apply
34 #if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
35 : not_< is_same<
36 typename find<Sequence,T>::type
37 , typename end<Sequence>::type
38 > >
39 {
40 #else
41 {
42 typedef not_< is_same<
43 typename find<Sequence,T>::type
44 , typename end<Sequence>::type
45 > > type;
46
47 BOOST_STATIC_CONSTANT(bool, value =
48 (not_< is_same<
49 typename find<Sequence,T>::type
50 , typename end<Sequence>::type
51 > >::value)
52 );
53 #endif
54 };
55 };
56
57 BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(2,contains_impl)
58
59 }}
60
61 #endif // BOOST_MPL_AUX_CONTAINS_IMPL_HPP_INCLUDED