// Copyright David Abrahams 2004. Distributed under the Boost // Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) //#include #include #include //#define print(expr) printf("%s ==> %s\n", #expr, expr) // not all the compilers can handle an incomplete class type here. struct X {}; int main() { using namespace boost::python::detail; typedef void (X::*pmf)(); assert(is_reference_to_function::value); assert(!is_reference_to_function::value); assert(!is_reference_to_function::value); assert(!is_reference_to_function::value); assert(!is_pointer_to_function::value); assert(is_pointer_to_function::value); assert(!is_pointer_to_function::value); assert(!is_pointer_to_function::value); assert(!is_pointer_to_function::value); assert(!is_reference_to_function_pointer::value); assert(!is_reference_to_function_pointer::value); assert(!is_reference_to_function_pointer::value); assert(is_reference_to_function_pointer::value); assert(is_reference_to_function_pointer::value); assert(!is_reference_to_function_pointer::value); assert(is_reference_to_pointer::value); assert(is_reference_to_pointer::value); assert(is_reference_to_pointer::value); assert(is_reference_to_pointer::value); assert(is_reference_to_pointer::value); assert(is_reference_to_pointer::value); assert(is_reference_to_pointer::value); assert(is_reference_to_pointer::value); assert(!is_reference_to_pointer::value); assert(!is_reference_to_pointer::value); assert(!is_reference_to_pointer::value); assert(!is_reference_to_pointer::value); assert(!is_reference_to_const::value); assert(is_reference_to_const::value); assert(!is_reference_to_const::value); assert(is_reference_to_const::value); assert(!is_reference_to_const::value); assert(!is_reference_to_const::value); assert(!is_reference_to_const::value); assert(is_reference_to_non_const::value); assert(!is_reference_to_non_const::value); assert(is_reference_to_non_const::value); assert(!is_reference_to_non_const::value); assert(!is_reference_to_non_const::value); assert(!is_reference_to_non_const::value); assert(!is_reference_to_non_const::value); assert(!is_reference_to_volatile::value); assert(!is_reference_to_volatile::value); assert(is_reference_to_volatile::value); assert(is_reference_to_volatile::value); assert(!is_reference_to_volatile::value); assert(!is_reference_to_volatile::value); assert(!is_reference_to_volatile::value); assert(!is_reference_to_class::value); assert(!is_reference_to_class::value); assert(!is_reference_to_class::value); assert(!is_reference_to_class::value); assert(is_reference_to_class::value); assert(is_reference_to_class::value); assert(is_reference_to_class::value); assert(is_reference_to_class::value); assert(!is_pointer_to_class::value); assert(!is_pointer_to_class::value); assert(!is_pointer_to_class::value); assert(!is_pointer_to_class::value); assert(!is_pointer_to_class::value); assert(is_pointer_to_class::value); assert(is_pointer_to_class::value); assert(is_pointer_to_class::value); assert(is_pointer_to_class::value); assert(is_reference_to_member_function_pointer::value); assert(is_reference_to_member_function_pointer::value); assert(is_reference_to_member_function_pointer::value); assert(is_reference_to_member_function_pointer::value); assert(!is_reference_to_member_function_pointer::value); assert(!is_reference_to_member_function_pointer::value); assert(!is_reference_to_member_function_pointer::value); return 0; }