get_mem_fn_type.hpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Copyright 2016 Klemens Morgenstern
  2. //
  3. // Distributed under the Boost Software License, Version 1.0.
  4. // (See accompanying file LICENSE_1_0.txt
  5. // or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. // For more information, see http://www.boost.org
  7. #ifndef BOOST_DLL_DETAIL_GET_MEM_FN_TYPE_HPP_
  8. #define BOOST_DLL_DETAIL_GET_MEM_FN_TYPE_HPP_
  9. namespace boost { namespace dll { namespace detail {
  10. template<typename Class, typename Func>
  11. struct get_mem_fn_type;
  12. template<typename Class, typename Return, typename ...Args>
  13. struct get_mem_fn_type<Class, Return(Args...)> {
  14. typedef Return (Class::*mem_fn)(Args...);
  15. };
  16. template<typename Class, typename Return, typename ...Args>
  17. struct get_mem_fn_type<const Class, Return(Args...)> {
  18. typedef Return (Class::*mem_fn)(Args...) const ;
  19. };
  20. template<typename Class, typename Return, typename ...Args>
  21. struct get_mem_fn_type<volatile Class, Return(Args...)> {
  22. typedef Return (Class::*mem_fn)(Args...) volatile;
  23. };
  24. template<typename Class, typename Return, typename ...Args>
  25. struct get_mem_fn_type<const volatile Class, Return(Args...)> {
  26. typedef Return (Class::*mem_fn)(Args...) const volatile ;
  27. };
  28. }}} // namespace boost::dll::detail
  29. #endif /* BOOST_DLL_SMART_LIBRARY_HPP_ */