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 7 // For more information, see http://www.boost.org 8 9 #ifndef BOOST_DLL_DETAIL_GET_MEM_FN_TYPE_HPP_ 10 #define BOOST_DLL_DETAIL_GET_MEM_FN_TYPE_HPP_ 11 12 namespace boost { namespace dll { namespace detail { 13 14 template<typename Class, typename Func> 15 struct get_mem_fn_type; 16 17 template<typename Class, typename Return, typename ...Args> 18 struct get_mem_fn_type<Class, Return(Args...)> { 19 typedef Return (Class::*mem_fn)(Args...); 20 }; 21 22 template<typename Class, typename Return, typename ...Args> 23 struct get_mem_fn_type<const Class, Return(Args...)> { 24 typedef Return (Class::*mem_fn)(Args...) const ; 25 }; 26 27 template<typename Class, typename Return, typename ...Args> 28 struct get_mem_fn_type<volatile Class, Return(Args...)> { 29 typedef Return (Class::*mem_fn)(Args...) volatile; 30 }; 31 32 template<typename Class, typename Return, typename ...Args> 33 struct get_mem_fn_type<const volatile Class, Return(Args...)> { 34 typedef Return (Class::*mem_fn)(Args...) const volatile ; 35 }; 36 37 }}} // namespace boost::dll::detail 38 39 40 #endif /* BOOST_DLL_SMART_LIBRARY_HPP_ */ 41