/*============================================================================= 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) ==============================================================================*/ #ifndef PHOENIX_OBJECT_NEW_HPP #define PHOENIX_OBJECT_NEW_HPP #include #include namespace boost { namespace phoenix { namespace detail { template struct new_eval { template struct result { typedef T* type; }; template static RT eval(Env const& /*env*/) { return new T; } template static RT eval(Env const& env, A0& _0) { return new T(_0.eval(env)); } template static RT eval(Env const& env, A0& _0, A1& _1) { return new T(_0.eval(env), _1.eval(env)); } // Bring in the rest of the evals #include }; } template inline actor >::type> new_() { return compose >(); } template inline actor, A0>::type> new_(A0 const& _0) { return compose >(_0); } template inline actor, A0, A1>::type> new_(A0 const& _0, A1 const& _1) { return compose >(_0, _1); } // Bring in the rest of the new_ functions #include }} #endif