1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- // Copyright 2005 Alexander Nasonov.
- // 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 <boost/mpl/at.hpp>
- #include <boost/mpl/lambda.hpp>
- #include <boost/mpl/placeholders.hpp>
- #include <boost/mpl/transform.hpp>
- #include <boost/mpl/vector.hpp>
- #include <boost/static_assert.hpp>
- #include <boost/type_traits/is_same.hpp>
- #include <boost/type_traits/promote.hpp>
- namespace mpl = boost::mpl;
- int main()
- {
- using namespace mpl::placeholders;
- typedef mpl::vector< char
- , signed char // 1
- , unsigned char
- , short int const // 3
- , unsigned short int
- , int volatile // 5
- , unsigned int // 6
- , long // 7
- , unsigned long // 8
- , float const // 9
- > types;
- typedef mpl::transform< types
- , mpl::lambda< boost::promote<_> >::type
- >::type promoted;
- BOOST_STATIC_ASSERT(( ::boost::is_same< mpl::at_c<promoted,1>::type, int >::value ));
- BOOST_STATIC_ASSERT(( ::boost::is_same< mpl::at_c<promoted,3>::type, int const >::value ));
- BOOST_STATIC_ASSERT(( ::boost::is_same< mpl::at_c<promoted,5>::type, int volatile >::value ));
- BOOST_STATIC_ASSERT(( ::boost::is_same< mpl::at_c<promoted,6>::type, unsigned int >::value ));
- BOOST_STATIC_ASSERT(( ::boost::is_same< mpl::at_c<promoted,7>::type, long >::value ));
- BOOST_STATIC_ASSERT(( ::boost::is_same< mpl::at_c<promoted,8>::type, unsigned long >::value ));
- BOOST_STATIC_ASSERT(( ::boost::is_same< mpl::at_c<promoted,9>::type, double const >::value ));
- return 0;
- }
|