Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: /// \file make_expr.hpp Chris@16: /// Contains overloads of make_expr() free function. Chris@16: // Chris@16: // Copyright 2008 Eric Niebler. Distributed under the Boost Chris@16: // Software License, Version 1.0. (See accompanying file Chris@16: // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 Chris@16: >()(a0 , a1); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 Chris@16: >()(c0 , c1); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 Chris@16: >()(a0 , a1 , a2); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 Chris@16: >()(c0 , c1 , c2); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 , const A3 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 , const A3 Chris@16: >()(a0 , a1 , a2 , a3); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 Chris@16: >()(c0 , c1 , c2 , c3); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 Chris@16: >()(a0 , a1 , a2 , a3 , a4); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 Chris@16: >()(c0 , c1 , c2 , c3 , c4); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 Chris@16: >()(a0 , a1 , a2 , a3 , a4 , a5); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 Chris@16: >()(c0 , c1 , c2 , c3 , c4 , c5); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 Chris@16: >()(a0 , a1 , a2 , a3 , a4 , a5 , a6); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 Chris@16: >()(c0 , c1 , c2 , c3 , c4 , c5 , c6); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 Chris@16: >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 Chris@16: >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7 , const A8 &a8) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 Chris@16: >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7 , const C8 &c8) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 Chris@16: >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename lazy_disable_if< Chris@16: is_domain Chris@16: , result_of::make_expr< Chris@16: Tag Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9 Chris@16: > Chris@16: >::type const Chris@16: make_expr(const A0 &a0 , const A1 &a1 , const A2 &a2 , const A3 &a3 , const A4 &a4 , const A5 &a5 , const A6 &a6 , const A7 &a7 , const A8 &a8 , const A9 &a9) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , deduce_domain Chris@16: , const A0 , const A1 , const A2 , const A3 , const A4 , const A5 , const A6 , const A7 , const A8 , const A9 Chris@16: >()(a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9); Chris@16: } Chris@16: Chris@16: Chris@16: template Chris@16: BOOST_FORCEINLINE Chris@16: typename result_of::make_expr< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9 Chris@16: >::type const Chris@16: make_expr(const C0 &c0 , const C1 &c1 , const C2 &c2 , const C3 &c3 , const C4 &c4 , const C5 &c5 , const C6 &c6 , const C7 &c7 , const C8 &c8 , const C9 &c9) Chris@16: { Chris@16: return proto::detail::make_expr_< Chris@16: Tag Chris@16: , Domain Chris@16: , const C0 , const C1 , const C2 , const C3 , const C4 , const C5 , const C6 , const C7 , const C8 , const C9 Chris@16: >()(c0 , c1 , c2 , c3 , c4 , c5 , c6 , c7 , c8 , c9); Chris@16: }