📄 operator.h
字号:
} #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template <class T_arg1,class T_arg2,class T_arg3> typename deduce_result_type<T_arg1,T_arg2,T_arg3>::type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass> (_A_1,_A_2,_A_3)); } #endif template <class T_arg1,class T_arg2,class T_arg3,class T_arg4> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass> (_A_1,_A_2,_A_3,_A_4)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template <class T_arg1,class T_arg2,class T_arg3,class T_arg4> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass> (_A_1,_A_2,_A_3,_A_4)); } #endif template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass> (_A_1,_A_2,_A_3,_A_4,_A_5)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass> (_A_1,_A_2,_A_3,_A_4,_A_5)); } #endif template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass> (_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass> (_A_1,_A_2,_A_3,_A_4,_A_5,_A_6)); } #endif template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass> (_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); } #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6,class T_arg7> typename deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7>::type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5,T_arg6 _A_6,T_arg7 _A_7) const { return lambda_action_convert<T_action, T_type>::template do_action< typename deduce_result_type<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass>::operand_type> (arg_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass,typename type_trait<T_arg3>::pass,typename type_trait<T_arg4>::pass,typename type_trait<T_arg5>::pass,typename type_trait<T_arg6>::pass,typename type_trait<T_arg7>::pass> (_A_1,_A_2,_A_3,_A_4,_A_5,_A_6,_A_7)); } #endif lambda_operator_convert(typename type_trait<T_arg>::take a) : arg_(a) {} arg_type arg_;};template <class T_action, class T_type, class T_arg>typename lambda_operator_convert<T_action, T_type, T_arg>::result_typelambda_operator_convert<T_action, T_type, T_arg>::operator ()() const { return lambda_action_convert<T_action, T_type>::template do_action< typename arg_type::result_type> (arg_()); }template <class T_action, class T_lambda_action, class T_type, class T_arg>void visit_each(const T_action& _A_action, const lambda_operator_convert<T_lambda_action, T_type, T_arg>& _A_target){ visit_each(_A_action, _A_target.arg_);}// Operators for lambda action arithmetic<plus>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<plus>, T_arg1, T_arg2> >operator + (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<plus>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<plus>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator + (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<arithmetic<plus>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<plus>, typename unwrap_reference<T_arg1>::type, T_arg2> >operator + (const T_arg1& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<plus>, typename unwrap_reference<T_arg1>::type, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1,a2.value_)); }// Operators for lambda action arithmetic<minus>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<minus>, T_arg1, T_arg2> >operator - (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<minus>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<minus>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator - (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<arithmetic<minus>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<minus>, typename unwrap_reference<T_arg1>::type, T_arg2> >operator - (const T_arg1& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<minus>, typename unwrap_reference<T_arg1>::type, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1,a2.value_)); }// Operators for lambda action arithmetic<multiplies>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<multiplies>, T_arg1, T_arg2> >operator * (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<multiplies>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<multiplies>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator * (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<arithmetic<multiplies>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<multiplies>, typename unwrap_reference<T_arg1>::type, T_arg2> >operator * (const T_arg1& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<multiplies>, typename unwrap_reference<T_arg1>::type, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1,a2.value_)); }// Operators for lambda action arithmetic<divides>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<divides>, T_arg1, T_arg2> >operator / (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<divides>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<divides>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator / (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<arithmetic<divides>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<divides>, typename unwrap_reference<T_arg1>::type, T_arg2> >operator / (const T_arg1& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<divides>, typename unwrap_reference<T_arg1>::type, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1,a2.value_)); }// Operators for lambda action arithmetic<modulus>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<modulus>, T_arg1, T_arg2> >operator % (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<modulus>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<modulus>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator % (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<arithmetic<modulus>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<arithmetic<modulus>, typename unwrap_reference<T_arg1>::type, T_arg2> >operator % (const T_arg1& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<arithmetic<modulus>, typename unwrap_reference<T_arg1>::type, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1,a2.value_)); }// Operators for lambda action bitwise<leftshift>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<leftshift>, T_arg1, T_arg2> >operator << (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<bitwise<leftshift>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<leftshift>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator << (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<bitwise<leftshift>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<leftshift>, typename unwrap_reference<T_arg1>::type, T_arg2> >operator << (const T_arg1& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<bitwise<leftshift>, typename unwrap_reference<T_arg1>::type, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1,a2.value_)); }// Operators for lambda action bitwise<rightshift>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<rightshift>, T_arg1, T_arg2> >operator >> (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<bitwise<rightshift>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<rightshift>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator >> (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<bitwise<rightshift>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<rightshift>, typename unwrap_reference<T_arg1>::type, T_arg2> >operator >> (const T_arg1& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<bitwise<rightshift>, typename unwrap_reference<T_arg1>::type, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1,a2.value_)); }// Operators for lambda action bitwise<and_>. At least one of the arguments needs to be of type lamdba, hence the overloads.template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<and_>, T_arg1, T_arg2> >operator & (const lambda<T_arg1>& a1, const lambda<T_arg2>& a2){ typedef lambda_operator<bitwise<and_>, T_arg1, T_arg2> operator_type; return lambda<operator_type>(operator_type(a1.value_,a2.value_)); }template <class T_arg1, class T_arg2>lambda<lambda_operator<bitwise<and_>, T_arg1, typename unwrap_reference<T_arg2>::type> >operator & (const lambda<T_arg1>& a1, const T_arg2& a2){ typedef lambda_operator<bitwise<and_>, T_arg1, typename unwrap_reference<T_arg2>::type> operator_type; return lambda<operator_type>(operator_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -