Boost logo

Boost Users :

Subject: [Boost-users] combining mpl sequences
From: Karsten Ahnert (karsten.ahnert_at_[hidden])
Date: 2010-09-05 06:10:17


Hi,

I have a templatized mpl-vector

template< class T > class containers :
  public mpl::vector<
    std::vector< T > ,
    std::list< T > ,
    std::deque< T >
> { };

and a mpl-vector holding some types:

typedef mpl::vector< float , double , long double >::type my_types;

Is there a simple way to build a mpl vector which contains the elements
of the first vector with template arguments of the second vector, hence

mpl:vector<
  std::vector< float > ,
  std::vector< double > ,
  std::vector< long double > ,
  std::list< float > ,
  std::list< double > ,
  std::list< long double > ,
  std::deque< float > ,
  std::deque< double > ,
  std::deque< long double >
>

I can do this manually with mpl::insert_range

typedef mpl::insert_range<
  mpl::vector0<> ,
  mpl::end< mpl::vector0<> >::type ,
  containers< mpl::at< my_types , mpl::int_<0> >::type >
>::type first;

typedef mpl::insert_range<
  first ,
  mpl::end< first >::type ,
  containers< mpl::at< my_types , mpl::int_<1> >::type >
>::type second;

typedef mpl::insert_range<
  second ,
  mpl::end< second >::type ,
  containers< mpl::at< my_types , mpl::int_<2> >::type >
>::type all_containers;

But this way is not very elegant. Does some has any hints how to do this
automatically?

Best regards,

Karsten


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