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).

Aleksey
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to