// -*- c++ -*- /* Do not edit! -- generated file */ /* */ #ifndef _SIGC_ADAPTORS_MACROS_DEDUCE_RESULT_TYPEHM4_ #define _SIGC_ADAPTORS_MACROS_DEDUCE_RESULT_TYPEHM4_ #include namespace sigc { /** A hint to the compiler. * Functors which have all methods based on templates * should publicly inherit from this hint and define * a nested template class @p deduce_result_type that * can be used to deduce the methods' return types. * * adaptor_base inherits from the functor_base hint so * derived types should also have a result_type defined. * * Adaptors don't inherit from this type directly. They use * use sigc::adapts as a base type instead. sigc::adaptors * wraps arbitrary functor types as well as function pointers * and class methods. * * @ingroup adaptors */ struct adaptor_base : public functor_base {}; /** Deduce the return type of a functor. * typename deduce_result_type::type * deduces a functor's result type if @p functor_type inherits from * sigc::functor_base and defines @p result_type or if @p functor_type * is actually a (member) function type. Multi-type functors are not * supported. * * sigc++ adaptors use * typename deduce_result_type::type * to determine the return type of their templated operator() overloads. * * Adaptors in turn define a nested template class @p deduce_result_type * that is used by template specializations of the global deduce_result_type * template to correctly deduce the return types of the adaptor's suitable * template operator() overload. * * @ingroup adaptors */ template ::value> struct deduce_result_type { typedef typename functor_trait::result_type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 0 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type<>::type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 1 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type::type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 2 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type::type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 3 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type::type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 4 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type::type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 5 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type::type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 6 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type::type type; }; /** Deduce the return type of a functor. * This is the template specialization of the sigc::deduce_result_type template * for 7 arguments. */ template struct deduce_result_type { typedef typename T_functor::template deduce_result_type::type type; }; } /* namespace sigc */ #endif /* _SIGC_ADAPTORS_MACROS_DEDUCE_RESULT_TYPEHM4_ */