X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2Ftype_traits.hh;h=910b4e4c94771ec7ded41c6cc3562115554907f6;hb=9c0d069987191bce78e13cdba410c34d34e736c2;hp=a728ac0928f914b3710379c7c7d59155635201e2;hpb=26610f603ebdd465307b9621f532c1fe19fd5571;p=senf.git diff --git a/senf/Utils/type_traits.hh b/senf/Utils/type_traits.hh index a728ac0..910b4e4 100644 --- a/senf/Utils/type_traits.hh +++ b/senf/Utils/type_traits.hh @@ -243,6 +243,45 @@ namespace senf : public boost::remove_cv< typename boost::remove_reference::type > {}; + /** \brief Get arity of function T + + \a T may be any function like type: function, pointer to function or (pointer to) + member-function. + + \code + BOOST_STATIC_ASSERT(( senf::function_arity::value == 1 )); + \endcode + */ + template < class T > + struct function_arity + : public boost::integral_constant< + unsigned, + boost::function_traits< + typename senf::remove_any_pointer::type>::arity> + {}; + + /** Test object if it is any \c std::pair type + + if \a Pair is any \c std::pair type, this trait will inherit from \c boost::true_type, + otherwise it will inherit from \c boost::false_type. + + \code + BOOST_STATIC_ASSERT(( senf::is_pair< std::pair >::value )); + BOOST_STATIC_ASSERT(( ! senf::is_pair< void () >::value )); + \endcode + */ + template + struct is_pair + : public boost::false_type + {}; + +#ifndef DOXYGEN + template + struct is_pair< std::pair > + : public boost::true_type + {}; +#endif + ///} #ifndef DOXYGEN @@ -261,8 +300,8 @@ namespace senf //#include "type_traits.ct" //#include "type_traits.cti" #endif - + // Local Variables: // mode: c++ // fill-column: 100