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 #ifndef BOOST_PHOENIX_HAS_UPPER_BOUND_EN_14_12_2004
16 #define BOOST_PHOENIX_HAS_UPPER_BOUND_EN_14_12_2004
17 
18 #include <boost/mpl/or.hpp>
19 #include "./is_std_map.hpp"
20 #include "./is_std_set.hpp"
21 #include "./is_std_hash_map.hpp"
22 #include "./is_std_hash_set.hpp"
23 
24 namespace boost
25 {
26     // Specialize this for user-defined types
27     template<typename T>
28     struct has_upper_bound
29         : boost::mpl::or_<
30             boost::mpl::or_<
31                 is_std_map<T>
32               , is_std_multimap<T>
33               , is_std_set<T>
34               , is_std_multiset<T>
35             >
36           , boost::mpl::or_<
37                 is_std_hash_map<T>
38               , is_std_hash_multimap<T>
39               , is_std_hash_set<T>
40               , is_std_hash_multiset<T>
41           >
42         >
43     {
44     };
45 }
46 
47 #endif
48