Boost logo

Boost :

From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2005-08-09 22:26:29

David Abrahams writes:
> Aleksey Gurtovoy <agurtovoy_at_[hidden]> writes:
>> David Abrahams writes:
>>> [Aleksey, I'm not sure why the sort Expression Semantics uses explicit
>>> lambda and apply_wrap2; I don't think it helps to make anything
>>> clearer]
>> Because there is no other way to write that out (auxiliary
>> metafunction aside).
> Sorry, I must be dense. Why not just use apply<...> ?

The code in question is this (from

    typedef back_inserter< vector<> > aux_in;
    typedef lambda<pred>::type p;

    typedef begin<s>::type pivot;
    typedef partition<
          iterator_range< next<pivot>::type, end<s>::type >
        , apply_wrap2<p,_1,deref<pivot>::type>
    // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        , aux_in
        , aux_in
>::type partitioned;

If 'pred' is a placeholder expression (e.g. 'is_float<_1>'), replacing
the highlighted line with

        , apply<pred,_1,deref<pivot>::type>

would blend together two of them into one, leading to unpredictable

        // the above is actually equivalent to this one, which
        // is not going to work
        , apply< is_float<_1>, _1, deref<pivot>::type >

Aleksey Gurtovoy
MetaCommunications Engineering

Boost list run by bdawes at, gregod at, cpdaniel at, john at