X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=senf%2FUtils%2Ftype_traits.hh;h=910b4e4c94771ec7ded41c6cc3562115554907f6;hb=1d058092bd771d52996416763b5d9cafadc2e087;hp=8f58122418e2f1d9e64978cbd8c3a11b64952f7b;hpb=2d88e6b3f5a6f3906e42264f58859e6bf9c12dae;p=senf.git diff --git a/senf/Utils/type_traits.hh b/senf/Utils/type_traits.hh index 8f58122..910b4e4 100644 --- a/senf/Utils/type_traits.hh +++ b/senf/Utils/type_traits.hh @@ -243,6 +243,15 @@ 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< @@ -251,6 +260,28 @@ namespace senf 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 @@ -269,8 +300,8 @@ namespace senf //#include "type_traits.ct" //#include "type_traits.cti" #endif - + // Local Variables: // mode: c++ // fill-column: 100