[MPL] lambda and gcc 4

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[MPL] lambda and gcc 4

João Abecasis-2
Hi!

Using current CVS or version 1.33.1 the following simplified test case
fails to compile with gcc 4.0.2

     #include <boost/mpl/lambda.hpp>

     int main()
     {
         using boost::mpl::lambda;

         typedef lambda<lambda<int> >::type type;
     }

What I'm actually trying to do is

     mpl::transform<
         PredSequence,
         mpl::lambda<mpl::_1>
     >

, where PredSequence is a MPL Sequence. The result of this operation is
subsequently used with fold/reverse_fold to chain together all the
metafunctions in PredSequence and create a single metafunction, where
the result of one metafunction is passed as argument to the next.

For the current CVS HEAD the errors I get with the above test case are,

boost/mpl/aux_/preprocessed/gcc/template_arity.hpp: In instantiation of
‘boost::mpl::aux::template_arity<T1>’:
test.cpp:7:   instantiated from here
boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:98: error:
‘boost::mpl::aux::template_arity<T1>::value’ is not a valid template
argument for type ‘int’ because it is a non-constant expression
test.cpp: In function ‘int main()’:
test.cpp:7: error: ‘boost::mpl::aux::template_arity<T1>::value’ is not a
valid template argument for type ‘int’ because it is a non-constant
expression
test.cpp:7: error: ‘boost::mpl::aux::template_arity<T1>::value’ is not a
valid template argument for type ‘int’ because it is a non-constant
expression

The full compiler version is 4.0.2 20051125 (Red Hat 4.0.2-8), from
Fedora Core 4. When using gcc 3.2.3 from the same linux distribution
both simplified test and the real use case compile cleanly.

Am I doing something wrong? What am I missing?

Best regards,


João

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