]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/phoenix/include/boost/phoenix/core/is_value.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / phoenix / include / boost / phoenix / core / is_value.hpp
1 /*==============================================================================
2 Copyright (c) 2005-2010 Joel de Guzman
3 Copyright (c) 2015 John Fletcher
4
5 Distributed under the Boost Software License, Version 1.0. (See accompanying
6 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 ==============================================================================*/
8 #ifndef BOOST_PHOENIX_CORE_IS_VALUE_HPP
9 #define BOOST_PHOENIX_CORE_IS_VALUE_HPP
10
11 #include <boost/mpl/bool.hpp>
12
13 // Copied from is_actor.hpp
14
15 // Note to Thomas and any future maintainer: please make this as
16 // lightweight as possible (as it is right now).
17
18 namespace boost { namespace phoenix
19 {
20 ///////////////////////////////////////////////////////////////////////////////
21 //
22 // is_value<T>
23 //
24 // Tests if T is a value. Evaluates to mpl::true_ or mpl::false_
25 //
26 ///////////////////////////////////////////////////////////////////////////////
27
28 namespace expression {
29 template <typename T>
30 struct value;
31 }
32
33 template <typename T, typename Enable = void>
34 struct is_value
35 : mpl::false_
36 {};
37
38 template <typename T>
39 struct is_value<T const>
40 : is_value<T>
41 {};
42
43 template <typename T>
44 struct is_value<T &>
45 : is_value<T>
46 {};
47
48 // This does not seem to work.
49 // There is an alternative in value.hpp which does work.
50 template <typename T>
51 struct is_value< expression::value<T> >
52 : mpl::true_
53 {};
54
55 template <typename T>
56 bool is_val(T const & /* t */)
57 {
58 return is_value<T>::value;
59 }
60
61 }}
62
63 #endif