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 + -
显示快捷键?