/*============================================================================== Copyright (c) 2001-2010 Joel de Guzman Copyright (c) 2010 Eric Niebler 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_FUNCTION_FUNCTION_HPP #define BOOST_PHOENIX_FUNCTION_FUNCTION_HPP #include //#include #include #include #include #include namespace boost { namespace phoenix { ///////////////////////////////////////////////////////////////////////////// // Functions ///////////////////////////////////////////////////////////////////////////// namespace expression { template struct function : detail::expression::function_eval {}; } // functor which returns our lazy function call extension template struct function { BOOST_CONSTEXPR function() : f() {} BOOST_CONSTEXPR function(F f_) : f(f_) {} template struct result; typename detail::expression::function_eval::type const operator()() const { return detail::expression::function_eval::make(f); } // Bring in the rest #include F f; }; } template struct result_of()> : phoenix::detail::expression::function_eval {}; } #endif