Imported Upstream version 1.51.0
[platform/upstream/boost.git] / boost / spirit / home / phoenix / stl / algorithm / detail / has_upper_bound.hpp
1 // Copyright 2005 Daniel Wallin.
2 // Copyright 2005 Joel de Guzman.
3 //
4 // Use, modification and distribution is subject to the Boost Software
5 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt)
7 //
8 // Modeled after range_ex, Copyright 2004 Eric Niebler
9 ///////////////////////////////////////////////////////////////////////////////
10 //
11 // has_upper_bound.hpp
12 //
13 /////////////////////////////////////////////////////////////////////////////
14
15 #if defined(_MSC_VER) && _MSC_VER >= 1000
16 #pragma once
17 #endif
18
19 #ifndef HAS_UPPER_BOUND_EN_14_12_2004
20 #define HAS_UPPER_BOUND_EN_14_12_2004
21
22 #include <boost/mpl/or.hpp>
23 #include "./is_std_map.hpp"
24 #include "./is_std_set.hpp"
25 #include "./is_std_hash_map.hpp"
26 #include "./is_std_hash_set.hpp"
27
28 namespace boost
29 {
30     // Specialize this for user-defined types
31     template<typename T>
32     struct has_upper_bound
33         : boost::mpl::or_<
34             boost::mpl::or_<
35                 is_std_map<T>
36               , is_std_multimap<T>
37               , is_std_set<T>
38               , is_std_multiset<T>
39             >
40           , boost::mpl::or_<
41                 is_std_hash_map<T>
42               , is_std_hash_multimap<T>
43               , is_std_hash_set<T>
44               , is_std_hash_multiset<T>
45           >
46         >
47     {
48     };
49 }
50
51 #endif