1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- // (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 <boost/type_traits/is_same.hpp>
- #include <boost/type_traits/add_pointer.hpp>
- #include <boost/mpl/assert.hpp>
- #include <boost/mpl/at.hpp>
- #include <boost/mpl/placeholders.hpp>
- #include <boost/mpl/always.hpp>
- #include <boost/function_types/components.hpp>
- #include <boost/function_types/parameter_types.hpp>
- using namespace boost;
- namespace ft = function_types;
- using boost::mpl::placeholders::_;
- class C;
- typedef C (C::*mem_func_ptr)();
- class X;
- BOOST_MPL_ASSERT((
- is_same< mpl::at_c<
- ft::components<mem_func_ptr, add_pointer<_> >
- ,1 >::type, C* >
- ));
- BOOST_MPL_ASSERT((
- is_same< mpl::at_c<
- ft::components<mem_func_ptr, add_pointer< add_pointer<_> > >
- ,1 >::type, C** >
- ));
- BOOST_MPL_ASSERT((
- is_same< mpl::at_c<
- ft::components<mem_func_ptr, mpl::always<X> >
- ,1 >::type, X >
- ));
- BOOST_MPL_ASSERT((
- is_same< mpl::at_c<
- ft::parameter_types<mem_func_ptr, add_pointer<_> >
- ,0 >::type, C* >
- ));
- BOOST_MPL_ASSERT((
- is_same< mpl::at_c<
- ft::parameter_types<mem_func_ptr, add_pointer< add_pointer<_> > >
- ,0 >::type, C** >
- ));
- BOOST_MPL_ASSERT((
- is_same< mpl::at_c<
- ft::parameter_types<mem_func_ptr, mpl::always<X> >
- ,0 >::type, X >
- ));
|