/*============================================================================== Copyright (c) 2001-2010 Joel de Guzman Copyright (c) 2010 Thomas Heller 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_OBJECT_CONSTRUCT_HPP #define BOOST_PHOENIX_OBJECT_CONSTRUCT_HPP #include #include #include #include #include #include #include BOOST_PHOENIX_DEFINE_EXPRESSION_VARARG( (boost)(phoenix)(construct) , (proto::terminal >) (meta_grammar) , BOOST_PHOENIX_COMPOSITE_LIMIT ) namespace boost { namespace phoenix { struct construct_eval { template struct result; template struct result : detail::result_of::target { }; template typename detail::result_of::target::type operator()(Target, Context const &) const { return typename detail::result_of::target::type(); } // Bring in the rest #include }; template struct default_actions::when : call {}; template inline typename expression::construct >::type const construct() { return expression:: construct >:: make(detail::target()); } // Bring in the rest #include }} #endif