X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2Ftype_traits.hh;h=910b4e4c94771ec7ded41c6cc3562115554907f6;hb=1d41d158d2b9c45b5c900320aae4dea1c9091261;hp=dd9ddb2349adff24791ece6e6589524b7f57551d;hpb=601d1f509f5bb24df167a4dd5a20da67a0af9af8;p=senf.git diff --git a/senf/Utils/type_traits.hh b/senf/Utils/type_traits.hh index dd9ddb2..910b4e4 100644 --- a/senf/Utils/type_traits.hh +++ b/senf/Utils/type_traits.hh @@ -33,7 +33,7 @@ #include #include #include -#include "../config.hh" +#include #include "type_traits.mpp" ///////////////////////////////hh.p//////////////////////////////////////// @@ -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