Boost logo

Boost Users :

From: Vyacheslav E. Andrejev (vandrejev_at_[hidden])
Date: 2005-01-27 03:38:48


Hello All!

I want to parametrize mpl::transform to form a new metafunction. But I have confused with mpl syntax and notations. Imagine, I have following vector

typedef boost::mpl::vector<Type1, Type2, Type3, Type4> types;

and following transformation:

typedef boost::mpl::transform<
    types
  , boost::is_convertible<Type3, boost::mpl::_1>
>::type result;

The result of the tansformation is a bool vector that indicates whether Type3 is convertible to any of type from types vector. Now I want to form metafunction that will construct such array not from Type3, but from its argument. Of course, I may use straightforward method:

struct WhoConverted
{
  template <typename ConversionType>
  struct apply
  {
    typedef typename boost::mpl::transform<
        types
      , boost::is_convertible<ConversionType, boost::mpl::_1>
>::type type;
  };
};

But it seems more like workaround rather than solution. Can it be done in more convenient and short manner by means of all mpl machinery like mpl::lambda, mpl::bind, placeholders, etc... ?

-- 
Vyacheslav E. Andrejev
System Architect, Excelsior, LLC

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net