
on Sun Apr 01 2007, "Christian Henning" <chhenning-AT-gmail.com> wrote:
Hi there,
is it possible to find all type vectors in a type matrix ( 2D type vector ) that match a predicate? In the end I would like to have them in another type matrix.
How about using filter_view?
Can somebody point out how I would put together such a metafunction? I'm not sure if the mpl lib supports my feature request.
Consider the following code:
#include "boost/mpl/vector.hpp" #include <boost/mpl/find_if.hpp> #include <boost/mpl/at.hpp>
using namespace std; using namespace boost;
namespace fields { struct id {}; struct name {}; struct address {}; struct birthday {}; }
namespace tags { struct primary {}; struct foreign {}; struct no_key {}; }
typedef mpl::vector<fields::id , tags::primary> id_field_t; typedef mpl::vector<fields::name , tags::foreign> name_field_t; typedef mpl::vector<fields::address , tags::foreign> address_field_t; typedef mpl::vector<fields::birthday, tags::no_key> birthday_field_t;
typedef mpl::vector< id_field_t , name_field_t , address_field_t , birthday_field_t > table;
// untested mpl::filter_view<table, mpl::is_same<mpl::back<_>, tags::foreign> > You can copy the filter_view into a vector if you want to, but you're probably better off just using it as though it were a vector. -- Dave Abrahams Boost Consulting www.boost-consulting.com Don't Miss BoostCon 2007! ==> http://www.boostcon.com