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