Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2002-11-18 08:01:45


Aleksey Gurtovoy <agurtovoy_at_[hidden]> writes:

> If you are tired of angle brackets in your templates (no, it's not a TV
> commercial :), may be you'll like this one:
>
> typedef eval<
> count_if(
> list(int,char,long,int)
> , lambda(is_same(_,int))
> )
> >::type res;
>
> BOOST_STATIC_ASSERT(res::value == 2);
>
> Or this one:
>
> typedef eval<
> find_if(
> filter_view(
> list(int,float,char,long,double)
> , lambda(not_(is_float(_)))
> )
> , lambda( or_(
> is_same(_,short)
> , less(sizeof_(_),sizeof_(int))
> ) )
> )
> >::type iter;
>
> typedef eval< is_same(iter::type,char) >::type res2;
>
> BOOST_STATIC_ASSERT(res2::value);
>
> The above actually compiles on Comeau C/C++ 4.3.0.1 and Intel C++ 6.0 with
> the current MPL sources in the CVS; see
> http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost/boost/libs/m
> pl/example/lambda2.cpp for an example. Note that the "factorial" snippet
> there doesn't work yet (if you ask 'fact::value', it will blow).

Interesting. Like Dirk, I too am wondering what the point is, beyond
syntactic sugar. I notice the namespace "mpl::v2_1" in the code.
Shouldn't we have completed MPL documentation before moving on to
things like this?

-- 
                       David Abrahams
   dave_at_[hidden] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk