Boost logo

Boost Users :

From: Sohail Somani (s.somani_at_[hidden])
Date: 2007-01-20 12:22:04


-----Original Message-----
From: boost-users-bounces_at_[hidden] on behalf of Sohail Somani
Sent: Sat 1/20/2007 8:48 AM
To: boost-users_at_[hidden]; boost-users_at_[hidden]
Subject: Re: [Boost-users] [Fusion]fusion::traits::is_sequence<->mpl::is_sequence?
 
-----Original Message-----
From: boost-users-bounces_at_[hidden] on behalf of Joel de Guzman

That supports my quick theories. For Sohail, who's doing a non-intrusive
adaptation, he'll need to specialize the mpl::sequence_tag.

------

I think I'll stick with fusion::result_of for now ;)

------

I take that back! I do need some of the mpl algorithms. Anyway, while it may not seem that much (I'm a total metaprogramming noob), my progress is below. I can safely say that there haven't been too many frustrations, which surprises me. If I had the mpl book (/me shakes fist @ chapters.ca), I probably would have gotten through it faster. Now what I need is to use max_element on the argument position of all the placeholders and we're done!

template<int NumPlaceholders, typename BindExpression>
void count_placeholders(BindExpression)
{
    typedef typename boost::bind_arg_sequence<BindExpression>::type bind_arg_sequence;
    typedef typename result_of::filter_if
        <
        bind_arg_sequence
        , boost::is_placeholder<mpl::_1>
>::type placeholders;
    BOOST_STATIC_ASSERT(( result_of::size<placeholders>::value == NumPlaceholders));
}

void fn_0(){}
void fn_1(int){}
void fn_2(int,int){}

MPL_TEST_CASE()
{
    count_placeholders<0>(boost::bind(&fn_0));
    count_placeholders<2>(boost::bind(&fn_2,_1,_2));
}



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