diff options
Diffstat (limited to 'boost/phoenix/bind/bind_function_object.hpp')
-rw-r--r-- | boost/phoenix/bind/bind_function_object.hpp | 75 |
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 |