summaryrefslogtreecommitdiff
path: root/boost/phoenix/core/is_value.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/phoenix/core/is_value.hpp')
-rw-r--r--boost/phoenix/core/is_value.hpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/boost/phoenix/core/is_value.hpp b/boost/phoenix/core/is_value.hpp
new file mode 100644
index 0000000000..80f6569284
--- /dev/null
+++ b/boost/phoenix/core/is_value.hpp
@@ -0,0 +1,63 @@
+/*==============================================================================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2015 John Fletcher
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PHOENIX_CORE_IS_VALUE_HPP
+#define BOOST_PHOENIX_CORE_IS_VALUE_HPP
+
+#include <boost/mpl/bool.hpp>
+
+// Copied from is_actor.hpp
+
+// Note to Thomas and any future maintainer: please make this as
+// lightweight as possible (as it is right now).
+
+namespace boost { namespace phoenix
+{
+///////////////////////////////////////////////////////////////////////////////
+//
+// is_value<T>
+//
+// Tests if T is a value. Evaluates to mpl::true_ or mpl::false_
+//
+///////////////////////////////////////////////////////////////////////////////
+
+ namespace expression {
+ template <typename T>
+ struct value;
+ }
+
+ template <typename T, typename Enable = void>
+ struct is_value
+ : mpl::false_
+ {};
+
+ template <typename T>
+ struct is_value<T const>
+ : is_value<T>
+ {};
+
+ template <typename T>
+ struct is_value<T &>
+ : is_value<T>
+ {};
+
+ // This does not seem to work.
+ // There is an alternative in value.hpp which does work.
+ template <typename T>
+ struct is_value< expression::value<T> >
+ : mpl::true_
+ {};
+
+ template <typename T>
+ bool is_val(T const & /* t */)
+ {
+ return is_value<T>::value;
+ }
+
+ }}
+
+#endif