operators.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 2,101 行 · 第 1/5 页

HPP
2,101
字号
{    return impl::make_binary2<xor_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<xor_op, BaseT0, BaseT1>::typeoperator^(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<xor_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  shift left lazy operator (infix <<)/////////////////////////////////////////////////////////////////////////////////struct shift_l_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<shift_l_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<shift_l_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<shift_l_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<shift_l_op, BaseT, T1>::typeoperator<<(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<shift_l_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<shift_l_op, T0, BaseT>::typeoperator<<(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<shift_l_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<shift_l_op, BaseT0, BaseT1>::typeoperator<<(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<shift_l_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  shift right lazy operator (infix >>)/////////////////////////////////////////////////////////////////////////////////struct shift_r_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<shift_r_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<shift_r_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<shift_r_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<shift_r_op, BaseT, T1>::typeoperator>>(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<shift_r_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<shift_r_op, T0, BaseT>::typeoperator>>(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<shift_r_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<shift_r_op, BaseT0, BaseT1>::typeoperator>>(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<shift_r_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  equal lazy operator (infix ==)/////////////////////////////////////////////////////////////////////////////////struct eq_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<eq_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<eq_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<eq_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<eq_op, BaseT, T1>::typeoperator==(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<eq_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<eq_op, T0, BaseT>::typeoperator==(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<eq_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<eq_op, BaseT0, BaseT1>::typeoperator==(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<eq_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  not equal lazy operator (infix !=)/////////////////////////////////////////////////////////////////////////////////struct not_eq_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<not_eq_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<not_eq_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<not_eq_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<not_eq_op, BaseT, T1>::typeoperator!=(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<not_eq_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<not_eq_op, T0, BaseT>::typeoperator!=(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<not_eq_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<not_eq_op, BaseT0, BaseT1>::typeoperator!=(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<not_eq_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  less than lazy operator (infix <)/////////////////////////////////////////////////////////////////////////////////struct lt_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<lt_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<lt_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<lt_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<lt_op, BaseT, T1>::typeoperator<(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<lt_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<lt_op, T0, BaseT>::typeoperator<(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<lt_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<lt_op, BaseT0, BaseT1>::typeoperator<(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<lt_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  less than equal lazy operator (infix <=)/////////////////////////////////////////////////////////////////////////////////struct lt_eq_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<lt_eq_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<lt_eq_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<lt_eq_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<lt_eq_op, BaseT, T1>::typeoperator<=(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<lt_eq_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<lt_eq_op, T0, BaseT>::typeoperator<=(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<lt_eq_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<lt_eq_op, BaseT0, BaseT1>::typeoperator<=(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<lt_eq_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  greater than lazy operator (infix >)/////////////////////////////////////////////////////////////////////////////////struct gt_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<gt_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<gt_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<gt_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<gt_op, BaseT, T1>::typeoperator>(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<gt_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<gt_op, T0, BaseT>::typeoperator>(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<gt_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<gt_op, BaseT0, BaseT1>::typeoperator>(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<gt_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  greater than equal lazy operator (infix >=)/////////////////////////////////////////////////////////////////////////////////struct gt_eq_op {    template <typename T0, typename T1>    struct result {        typedef typename binary_operator<gt_eq_op, T0, T1>            ::result_type type;    };    template <typename T0, typename T1>    typename binary_operator<gt_eq_op, T0, T1>::result_type    operator()(T0& _0, T1& _1) const    { return binary_operator<gt_eq_op, T0, T1>::eval(_0, _1); }};//////////////////////////////////template <typename BaseT, typename T1>inline typename impl::make_binary1<gt_eq_op, BaseT, T1>::typeoperator>=(actor<BaseT> const& _0, T1 CREF _1){    return impl::make_binary1<gt_eq_op, BaseT, T1>::construct(_0, _1);}//////////////////////////////////template <typename T0, typename BaseT>inline typename impl::make_binary2<gt_eq_op, T0, BaseT>::typeoperator>=(T0 CREF _0, actor<BaseT> const& _1){    return impl::make_binary2<gt_eq_op, T0, BaseT>::construct(_0, _1);}//////////////////////////////////template <typename BaseT0, typename BaseT1>inline typename impl::make_binary3<gt_eq_op, BaseT0, BaseT1>::typeoperator>=(actor<BaseT0> const& _0, actor<BaseT1> const& _1){    return impl::make_binary3<gt_eq_op, BaseT0, BaseT1>::construct(_0, _1);}///////////////////////////////////////////////////////////////////////////////////  logical and lazy operator (infix &&)////  The logical_and_composite class and its corresponding generators are//  provided to allow short-circuit evaluation of the operator's//  operands./////////////////////////////////////////////////////////////////////////////////template <typename A0, typename A1>struct logical_and_composite {    typedef logical_and_composite<A0, A1> self_t;    template <typename TupleT>    struct result {        typedef typename binary_operator<logical_and_op,            typename actor_result<A0, TupleT>::plain_type,            typename actor_result<A1, TupleT>::plain_type        >::result_type type;    };    logical_and_composite(A0 const& _0, A1 const& _1)    :   a0(_0), a1(_1) {}    template <typename TupleT>    typename actor_result<self_t, TupleT>::type    eval(TupleT const& args) const    {        return a0.eval(args) && a1.eval(args);    }    A0 a0; A1 a1; //  actors};#if !(defined(__ICL) && __ICL <= 500)//////////////////////////////////template <typename BaseT, typename T1>inline actor<logical_and_composite<actor<BaseT>, typename as_actor<T1>::type> >operator&&(actor<BaseT> const& _0, T1 CREF _1){    return logical_and_composite        <actor<BaseT>, typename as_actor<T1>::type>        (_0, as_actor<T1>::convert(_1));}//////////////////////////////////template <typename T0, typename BaseT>inline actor<logical_and_composite<typename as_actor<T0>::type, actor<BaseT> > >oper

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?