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

📄 group.h

📁 一个对象回调接口库
💻 H
📖 第 1 页 / 共 4 页
字号:
// -*- c++ -*-/* Do not edit! -- generated file */#ifndef _SIGC_ADAPTORS_LAMBDA_MACROS_GROUPHM4_#define _SIGC_ADAPTORS_LAMBDA_MACROS_GROUPHM4_#include <sigc++/adaptors/lambda/base.h>/** @defgroup group_ group() * sigc::group() alters an arbitrary functor by rebuilding its arguments from one or more lambda expressions. * For each parameter that should be passed to the wrapped functor one lambda expression * has to be passed into group(). Lambda selectors can be used as placeholders for the * arguments passed into the new functor. Arguments that don't have a placeholder in one * of the lambda expressions are dropped. * * @par Examples: *   @code *   void foo(int, int); *   int bar(int); *   // argument binding ... *   sigc::group(&foo,10,sigc::_1)(20); //fixes the first argument and calls foo(10,20) *   sigc::group(&foo,sigc::_1,30)(40); //fixes the second argument and calls foo(40,30) *   // argument reordering ... *   sigc::group(&foo,sigc::_2,sigc::_1)(1,2); //calls foo(2,1) *   // argument hiding ... *   sigc::group(&foo,sigc::_1,sigc::_2)(1,2,3); //calls foo(1,2) *   // functor composition ... *   sigc::group(&foo,sigc::_1,sigc::group(&bar,sigc::_2))(1,2); //calls foo(1,bar(2)) *   // algebraic expressions ... *   sigc::group(&foo,sigc::_1*sigc::_2,sigc::_1/sigc::_2)(6,3); //calls foo(6*3,6/3) *   @endcode * * The functor sigc::group() returns can be passed into * sigc::signal::connect() directly. * * @par Example: *   @code *   sigc::signal<void,int,int> some_signal; *   void foo(int); *   some_signal.connect(sigc::group(&foo,sigc::_2)); *   @endcode * * Like in sigc::bind() you can bind references to functors by passing the objects * through the sigc::ref() helper function. * * @par Example: *   @code *   int some_int; *   sigc::signal<void> some_signal; *   void foo(int&); *   some_signal.connect(sigc::group(&foo,sigc::ref(some_int))); *   @endcode * * If you bind an object of a sigc::trackable derived type to a functor * by reference, a slot assigned to the group adaptor is cleared automatically * when the object goes out of scope. * * @par Example: *   @code *   struct bar : public sigc::trackable {} some_bar; *   sigc::signal<void> some_signal; *   void foo(bar&); *   some_signal.connect(sigc::group(&foo,sigc::ref(some_bar))); *     // disconnected automatically if some_bar goes out of scope *   @endcode * * @ingroup adaptors, lambdas */namespace sigc {template <class T_functor, class T_type1>struct lambda_group1 : public lambda_base{  typedef typename functor_trait<T_functor>::result_type result_type;  typedef typename lambda<T_type1>::lambda_type   value1_type;  typedef typename adaptor_trait<T_functor>::adaptor_type functor_type;  template <class T_arg1=void,class T_arg2=void,class T_arg3=void,class T_arg4=void,class T_arg5=void,class T_arg6=void,class T_arg7=void>  struct deduce_result_type    { typedef typename functor_type::template deduce_result_type<          typename value1_type::template 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>::type        >::type type; };  result_type  operator ()() const;  template <class T_arg1>  typename deduce_result_type<T_arg1>::type  operator() (T_arg1 _A_1) const    { return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1>::type>(        this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename type_trait<T_arg1>::pass>(_A_1)); }  #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1>  typename deduce_result_type<T_arg1>::type  sun_forte_workaround (T_arg1 _A_1) const    { return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1>::type>(        this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename type_trait<T_arg1>::pass>(_A_1)); }  #endif //SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2>  typename deduce_result_type<T_arg1,T_arg2>::type  operator() (T_arg1 _A_1,T_arg2 _A_2) const    { return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type>(        this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }  #ifndef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD  template <class T_arg1,class T_arg2>  typename deduce_result_type<T_arg1,T_arg2>::type  sun_forte_workaround (T_arg1 _A_1,T_arg2 _A_2) const    { return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2>::type>(        this->value1_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename type_trait<T_arg1>::pass,typename type_trait<T_arg2>::pass>(_A_1,_A_2)); }  #endif //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  operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3) const    { return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(        this->value1_.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)); }  #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 this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3>::type>(        this->value1_.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 //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  operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4) const    { return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(        this->value1_.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 this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4>::type>(        this->value1_.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 //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  operator() (T_arg1 _A_1,T_arg2 _A_2,T_arg3 _A_3,T_arg4 _A_4,T_arg5 _A_5) const    { return this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(        this->value1_.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 this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5>::type>(        this->value1_.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 //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  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 this->func_.SIGC_WORKAROUND_OPERATOR_PARENTHESES<          typename value1_type::template deduce_result_type<T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6>::type>(        this->value1_.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)); }

⌨️ 快捷键说明

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