1 2 // (C) Copyright Tobias Schwinger 3 // 4 // Use modification and distribution are subject to the boost Software License, 5 // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). 6 7 //------------------------------------------------------------------------------ 8 9 #include <boost/mpl/assert.hpp> 10 #include <boost/function_types/is_function_pointer.hpp> 11 #include <boost/function_types/is_member_function_pointer.hpp> 12 13 namespace ft = boost::function_types; 14 15 typedef void(* const func_c_ptr)(); 16 typedef void(* volatile func_v_ptr)(); 17 typedef void(* const volatile func_cv_ptr)(); 18 class C; 19 typedef void(C::* const mem_func_c_ptr)(); 20 typedef void(C::* volatile mem_func_v_ptr)(); 21 typedef void(C::* const volatile mem_func_cv_ptr)(); 22 23 // note: the pointer has cv-qualifiers, not the function - non_cv tag must match 24 25 BOOST_MPL_ASSERT(( 26 ft::is_function_pointer< func_c_ptr, ft::non_cv > 27 )); 28 29 BOOST_MPL_ASSERT(( 30 ft::is_function_pointer< func_v_ptr, ft::non_cv > 31 )); 32 33 BOOST_MPL_ASSERT(( 34 ft::is_function_pointer< func_cv_ptr, ft::non_cv > 35 )); 36 37 38 BOOST_MPL_ASSERT(( 39 ft::is_member_function_pointer< mem_func_c_ptr, ft::non_cv > 40 )); 41 42 BOOST_MPL_ASSERT(( 43 ft::is_member_function_pointer< mem_func_v_ptr, ft::non_cv > 44 )); 45 46 BOOST_MPL_ASSERT(( 47 ft::is_member_function_pointer< mem_func_cv_ptr, ft::non_cv > 48 )); 49 50 51