traits.hpp 823 B

1234567891011121314151617181920212223242526272829
  1. /*
  2. @Copyright Barrett Adair 2015-2017
  3. Distributed under the Boost Software License, Version 1.0.
  4. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
  5. */
  6. #ifndef BOOST_CLBL_TRTS_DETAIL_TRAITS_HPP
  7. #define BOOST_CLBL_TRTS_DETAIL_TRAITS_HPP
  8. #include <boost/callable_traits/detail/forward_declarations.hpp>
  9. #include <boost/callable_traits/detail/utility.hpp>
  10. namespace boost { namespace callable_traits { namespace detail {
  11. // Here is where the magic happens
  12. template<typename T>
  13. using traits = typename BOOST_CLBL_TRTS_DISJUNCTION(
  14. function_object<unwrap_reference<T>>,
  15. function<T>,
  16. pmf<T>,
  17. pmd<T>,
  18. default_callable_traits<T>
  19. )::traits;
  20. }}} // namespace boost::callable_traits::detail
  21. #endif // #ifndef BOOST_CLBL_TRTS_DETAIL_TRAITS_HPP