
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