|
Boost : |
From: Peter Dimov (pdimov_at_[hidden])
Date: 2002-11-18 09:17:29
From: "Joel de Guzman" <djowel_at_[hidden]>
> From: "Peter Dimov" <pdimov_at_[hidden]>
> > From: "Aleksey Gurtovoy" <agurtovoy_at_[hidden]>
> > > 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);
> >
> > OK, I give up. How does this work?
>
> I've been twisting my mind very hard the past hour trying to
> imagine how this will work without peeking at the code.
> Whew, this is a tough one to crack!
I wrote "I don't understand how it works even _after_ (briefly) looking at
the code. ;-)" but then it occured to me that list(int, char, long, int) is
a function type. Cool trick. Cv qualifiers will probably be a problem but
it's cool. Aleksey wins the Boost obfuscated C++ contest of the week.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk