summaryrefslogtreecommitdiff
path: root/boost/phoenix/bind/bind_function_object.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/phoenix/bind/bind_function_object.hpp')
-rw-r--r--boost/phoenix/bind/bind_function_object.hpp75
1 files changed, 17 insertions, 58 deletions
diff --git a/boost/phoenix/bind/bind_function_object.hpp b/boost/phoenix/bind/bind_function_object.hpp
index 00bdb9b245..ed2be3eace 100644
--- a/boost/phoenix/bind/bind_function_object.hpp
+++ b/boost/phoenix/bind/bind_function_object.hpp
@@ -1,79 +1,38 @@
/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2016 Kohei Takahashi
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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)
==============================================================================*/
-#if !BOOST_PHOENIX_IS_ITERATING
-
#ifndef PHOENIX_BIND_BIND_FUNCTION_OBJECT_HPP
#define PHOENIX_BIND_BIND_FUNCTION_OBJECT_HPP
+#include <boost/phoenix/core/limits.hpp>
+
+#if defined(BOOST_PHOENIX_NO_VARIADIC_BIND)
+# include <boost/phoenix/bind/detail/cpp03/bind_function_object.hpp>
+#else
+
#include <boost/phoenix/core/expression.hpp>
#include <boost/phoenix/core/detail/function_eval.hpp>
-namespace boost { namespace phoenix {
+namespace boost { namespace phoenix
+{
template <typename F>
- inline
- typename detail::expression::function_eval<F>::type const
+ inline typename detail::expression::function_eval<F>::type const
bind(F f)
{
return detail::expression::function_eval<F>::make(f);
}
-#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
- #include <boost/phoenix/bind/preprocessed/bind_function_object.hpp>
-#else
-
-#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
- #pragma wave option(preserve: 2, line: 0, output: "preprocessed/bind_function_object_" BOOST_PHOENIX_LIMIT_STR ".hpp")
-#endif
-
-/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
-
- 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)
-==============================================================================*/
-
-#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
- #pragma wave option(preserve: 1)
-#endif
-
-#define BOOST_PHOENIX_ITERATION_PARAMS \
- (3, (1, BOOST_PP_DEC(BOOST_PHOENIX_ACTOR_LIMIT), \
- <boost/phoenix/bind/bind_function_object.hpp>))
-#include BOOST_PHOENIX_ITERATE()
-
-#if defined(__WAVE__) && defined (BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
- #pragma wave option(output: null)
-#endif
-
-#endif
-
-}}
-
-#endif
-
-#else
-
- template <
- typename F
- , BOOST_PHOENIX_typename_A
- >
- inline
- typename detail::expression::function_eval<
- F
- , BOOST_PHOENIX_A
- >::type const
- bind(F f, BOOST_PHOENIX_A_const_ref_a)
+ template <typename F, typename... A>
+ inline typename detail::expression::function_eval<F, A...>::type const
+ bind(F f, A const&... a)
{
- return
- detail::expression::function_eval<F, BOOST_PHOENIX_A>::make(
- f
- , BOOST_PHOENIX_a
- );
+ return detail::expression::function_eval<F, A...>::make(f, a...);
}
+}} // namespace boost::phoenix
#endif
+#endif