Boost logo

Boost :

From: Jaap Suter (J.Suter_at_[hidden])
Date: 2003-01-12 23:24:35


> Yep, to be concrete, 'T::value_type'. Please see the following posts for
an
> explanation of the shortcoming, as well as for a technique to work around
> it:
>
> http://lists.boost.org/MailArchives/boost/msg39915.php (the relevant part
> starts from "Well, having said that..." paragraph)
> http://lists.boost.org/MailArchives/boost/msg39930.php (further
explanation)

Ah, thanks. I guess those MailArchives are better than the ActiveState ones.

> template< class T >
> struct meta_fun_1
> : mpl::if_<
> mpl::is_placeholder<T>
> , mpl::identity<T>
> , meta_fun_1_impl<T>
> >::type
> {
> BOOST_MPL_AUX_LAMBDA_SUPPORT( 1, meta_fun_1, (T) )
> };

This works excellent. As a result, my code now compiles on Intel, MSVC and
GCC.

"... makes small dance ..."

Seriously though, I had some funny problems with MSVC. For example, I got
the following error on some lines:

    syntax error : ''

That's right, there is nothing in between the quotes. Turns out the
following doesn't work on MSVC, in some cases:

    foo( some_template< N >::type() );

I had to replace those with:

    typedef some_template< N >::type() bar;
    foo( bar() );

I had some other interesting things as well. I will add them all to the MPL
wiki, as well as the GCC problems. I will also add an item on the lambda
situation and the work-arounds.
I'm a bit busy this week, but I hope to do it before wednesday.

Thanks for all the support.

Jaap Suter


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