Boost logo

Boost :

From: Hugo Duncan (hugoduncan_at_[hidden])
Date: 2004-09-15 11:28:08


Aleksey,

With
    gcc (GCC) 3.3.3 (cygwin special)

there is a include order dependency. Including boost/bind.hpp before
boost/mpl/transform.hpp causes a compile error

    type named `type' in `struct
    boost::mpl::apply_wrap2<boost::mpl::push_front<mpl_::na, mpl_::na>,
    mpl_::arg<1>, wrapper<mpl_::arg<2> > >'

I have not been able to test with other gcc versions.

Regards,
Hugo

#include "boost/bind.hpp"
#include "boost/mpl/transform.hpp"

#include <boost/mpl/apply.hpp>
#include <boost/mpl/list.hpp>
#include <boost/mpl/equal.hpp>
#include <boost/mpl/assert.hpp>

// computed type
template <typename T>
struct wrapper{};

// metafunction class to compute type
struct wrapped_type
{
   template <typename T>
   struct apply
   {
     typedef wrapper<T> type;
   };
};

void test_transform()
{
   typedef boost::mpl::list<int, char> typelist;
   typedef boost::mpl::list< wrapper<int>, wrapper<char> > wrapped_typelist;

   typedef boost::mpl::transform< typelist, wrapped_type >::type
     result;

   BOOST_MPL_ASSERT(( boost::mpl::equal<wrapped_typelist, result> ));
}


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk