| /////////////////////////////////////////////////////////////////////////////// |
| // expr1.hpp |
| // Contains definition of expr\<\>::operator() overloads. |
| // |
| // Copyright 2008 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_PP_IS_ITERATING |
| #error Do not include this file directly |
| #endif |
| |
| #define N BOOST_PP_ITERATION() |
| |
| /// \overload |
| /// |
| template<BOOST_PP_ENUM_PARAMS(N, typename A)> |
| typename result_of::BOOST_PP_CAT(funop, N)< |
| expr const |
| , default_domain BOOST_PP_ENUM_TRAILING_PARAMS(N, const A) |
| >::type const |
| operator ()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, const &a)) const |
| { |
| return result_of::BOOST_PP_CAT(funop, N)< |
| expr const |
| , default_domain BOOST_PP_ENUM_TRAILING_PARAMS(N, const A) |
| >::call(*this BOOST_PP_ENUM_TRAILING_PARAMS(N, a)); |
| } |
| |
| #ifdef BOOST_PROTO_DEFINE_TERMINAL |
| /// \overload |
| /// |
| template<BOOST_PP_ENUM_PARAMS(N, typename A)> |
| typename result_of::BOOST_PP_CAT(funop, N)< |
| expr |
| , default_domain BOOST_PP_ENUM_TRAILING_PARAMS(N, const A) |
| >::type const |
| operator ()(BOOST_PP_ENUM_BINARY_PARAMS(N, A, const &a)) |
| { |
| return result_of::BOOST_PP_CAT(funop, N)< |
| expr |
| , default_domain BOOST_PP_ENUM_TRAILING_PARAMS(N, const A) |
| >::call(*this BOOST_PP_ENUM_TRAILING_PARAMS(N, a)); |
| } |
| #endif |
| |
| #undef N |