|
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