// (C) Copyright Tobias Schwinger // // Use modification and distribution are subject to the boost Software License, // Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt). //------------------------------------------------------------------------------ #include #include #include namespace ft = boost::function_types; class C; typedef C func(); typedef C const c_func(); typedef C (*func_ptr)(); typedef C const (*c_func_ptr)(); typedef C (&func_ref)(); typedef C const (&c_func_ref)(); typedef C (C::*mem_func_ptr)(); typedef C const (C::*c_mem_func_ptr)(); typedef C (C::*mem_func_ptr_c)() const; typedef C const (C::*c_mem_func_ptr_c)() const; typedef C (C::*mem_func_ptr_v)() volatile; typedef C const (C::*c_mem_func_ptr_v)() volatile; typedef C (C::*mem_func_ptr_cv)() const volatile; typedef C const (C::*c_mem_func_ptr_cv)() const volatile; typedef int C::* mem_ptr; typedef int const C::* c_mem_ptr; BOOST_MPL_ASSERT(( boost::is_same::type,C> )); BOOST_MPL_ASSERT(( boost::is_same::type,C const> )); BOOST_MPL_ASSERT(( boost::is_same::type,C> )); BOOST_MPL_ASSERT(( boost::is_same::type,C const> )); BOOST_MPL_ASSERT(( boost::is_same::type,C> )); BOOST_MPL_ASSERT(( boost::is_same::type,C const> )); BOOST_MPL_ASSERT(( boost::is_same::type,C> )); BOOST_MPL_ASSERT(( boost::is_same::type,C const> )); BOOST_MPL_ASSERT(( boost::is_same::type,C> )); BOOST_MPL_ASSERT(( boost::is_same::type,C const> )); BOOST_MPL_ASSERT(( boost::is_same::type,C> )); BOOST_MPL_ASSERT(( boost::is_same::type,C const> )); BOOST_MPL_ASSERT(( boost::is_same::type,C> )); BOOST_MPL_ASSERT(( boost::is_same::type,C const> )); BOOST_MPL_ASSERT(( boost::is_same::type,int&> )); BOOST_MPL_ASSERT(( boost::is_same::type,int const&> ));