dfunction.hpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334
  1. // (C) Copyright Edward Diener 2012,2013
  2. // Use, modification and distribution are subject to the Boost Software License,
  3. // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
  4. // http://www.boost.org/LICENSE_1_0.txt).
  5. #if !defined(BOOST_TTI_DETAIL_FUNCTION_HPP)
  6. #define BOOST_TTI_DETAIL_FUNCTION_HPP
  7. #include <boost/mpl/or.hpp>
  8. #include <boost/preprocessor/cat.hpp>
  9. #include <boost/tti/detail/dmem_fun.hpp>
  10. #include <boost/tti/detail/dstatic_mem_fun.hpp>
  11. #include <boost/tti/gen/namespace_gen.hpp>
  12. #define BOOST_TTI_DETAIL_TRAIT_HAS_FUNCTION(trait,name) \
  13. BOOST_TTI_DETAIL_TRAIT_HAS_CALL_TYPES_MEMBER_FUNCTION(trait,name) \
  14. BOOST_TTI_DETAIL_TRAIT_IMPL_HAS_STATIC_MEMBER_FUNCTION(trait,name) \
  15. template<class BOOST_TTI_DETAIL_TP_T,class BOOST_TTI_DETAIL_TP_R,class BOOST_TTI_DETAIL_TP_FS,class BOOST_TTI_DETAIL_TP_TAG> \
  16. struct BOOST_PP_CAT(trait,_detail_hf) : \
  17. boost::mpl::or_ \
  18. < \
  19. BOOST_PP_CAT(trait,_detail_call_types)<BOOST_TTI_DETAIL_TP_T,BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG>, \
  20. BOOST_PP_CAT(trait,_detail_ihsmf) \
  21. < \
  22. BOOST_TTI_DETAIL_TP_T, \
  23. typename BOOST_TTI_NAMESPACE::detail::tfunction_seq<BOOST_TTI_DETAIL_TP_R,BOOST_TTI_DETAIL_TP_FS,BOOST_TTI_DETAIL_TP_TAG>::type \
  24. > \
  25. > \
  26. { \
  27. }; \
  28. /**/
  29. #endif // BOOST_TTI_DETAIL_FUNCTION_HPP