⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base.h

📁 一个对象回调接口库
💻 H
📖 第 1 页 / 共 2 页
字号:
  typedef T_type result_type; // all operator() overloads return T_type.  typedef lambda<T_type> lambda_type;  result_type operator()() const;  template <class T_arg1>  result_type operator ()(T_arg1 _A_1) const     { return value_; }  #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1>  result_type sun_forte_workaround(T_arg1 _A_1) const    { return value_; }  #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2>  result_type operator ()(T_arg1 _A_1,T_arg2 _A_2) const     { return value_; }  #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2>  result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2) const    { return value_; }  #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2,class T_arg3>  result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const     { return value_; }  #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2,class T_arg3>  result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const    { return value_; }  #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>  result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const     { return value_; }  #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2,class T_arg3,class T_arg4>  result_type sun_forte_workaround(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const    { return value_; }  #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>  result_type operator ()(T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const     { return value_; }  #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5>  result_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 value_; }  #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2,class T_arg3,class T_arg4,class T_arg5,class T_arg6>  result_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 value_; }  #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>  result_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 value_; }  #endif //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>  result_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 value_; }  #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>  result_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 value_; }  #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  explicit lambda_core(typename type_trait<T_type>::take v)    : value_(v) {}  T_type value_;};template <class T_type>typename lambda_core<T_type, false>::result_type lambda_core<T_type, false>::operator()() const  { return value_; }} /* namespace internal */template <class T_action, class T_functor, bool I_islambda>void visit_each(const T_action& _A_action,                const internal::lambda_core<T_functor, I_islambda>& _A_target){  visit_each(_A_action, _A_target.value_);}// forward declarations for lambda operators other<subscript> and other<assign>template <class T_type>struct other;struct subscript;struct assign;template <class T_action, class T_type1, class T_type2>struct lambda_operator;template <class T_type>struct unwrap_lambda_type;/** Lambda type. * Objects of this type store a value that may be of type lambda itself. * In this case, operator()() executes the lambda (a lambda is always a functor at the same time). * Otherwise, operator()() simply returns the stored value. * The assign and subscript operators are defined to return a lambda operator. * * @ingroup lambdas */template <class T_type>struct lambda : public internal::lambda_core<T_type>{  typedef lambda<T_type> self;  lambda()    {}  lambda(typename type_trait<T_type>::take v)    : internal::lambda_core<T_type>(v)     {}  // operators for other<subscript>  template <class T_arg>  lambda<lambda_operator<other<subscript>, self, typename unwrap_lambda_type<T_arg>::type> >  operator [] (const T_arg& a) const    { typedef lambda_operator<other<subscript>, self, typename unwrap_lambda_type<T_arg>::type> lambda_operator_type;      return lambda<lambda_operator_type>(lambda_operator_type(this->value_, unwrap_lambda_value(a))); }  // operators for other<assign>  template <class T_arg>  lambda<lambda_operator<other<assign>, self, typename unwrap_lambda_type<T_arg>::type> >  operator = (const T_arg& a) const    { typedef lambda_operator<other<assign>, self, typename unwrap_lambda_type<T_arg>::type> lambda_operator_type;      return lambda<lambda_operator_type>(lambda_operator_type(this->value_, unwrap_lambda_value(a))); }};template <class T_action, class T_type>void visit_each(const T_action& _A_action,                const lambda<T_type>& _A_target){  visit_each(_A_action, _A_target.value_);}/// Converts a reference into a lambda object.template <class T_type>lambda<T_type&> var(T_type& v){ return lambda<T_type&>(v); }/// Converts a constant reference into a lambda object.template <class T_type>lambda<const T_type&> var(const T_type& v){ return lambda<const T_type&>(v); }/** Deduces the type of the object stored in an object of the passed lambda type. * If the type passed as template argument is no lambda type, * type is defined to unwrap_reference<T_type>::type. */template <class T_type>struct unwrap_lambda_type{ typedef typename unwrap_reference<T_type>::type type; };template <class T_type>struct unwrap_lambda_type<lambda<T_type> >{ typedef T_type type; };/** Gets the object stored inside a lambda object. * Returns the object passed as argument if it is not of type lambda. */template <class T_type>T_type& unwrap_lambda_value(T_type& a){ return a; }template <class T_type>const T_type& unwrap_lambda_value(const T_type& a){ return a; }template <class T_type>const T_type& unwrap_lambda_value(const lambda<T_type>& a){ return a.value_; }} /* namespace sigc */#endif /* _SIGC_LAMBDA_BASE_HPP_ */

⌨️ 快捷键说明

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