[mpl] BOOST_MPL_METAFUNCTION_MAX_ARITY

I was having a bit of trouble this afternoon getting some MPL code to compile, when I realized I was trying to use a placeholder symbol embedded in an expression using a metafunction of arity 7. I know that the maximum metafunction arity is set at 5, so I tried setting BOOST_MPL_METAFUNCTION_MAX_ARITY to 7. This didn't work either, because of the preprocessed headers. So I tried defining BOOST_MPL_NO_PREPROCESSED_HEADERS. This reduced the number of error messages from infinity to 27. So I have these questions: 1. Am I right that as presently configured mpl::lambda cannot look for placeholders inside (fully-curried) metafunctions of arity > 5? 2. Are preprocessed headers used just to cut compilation times, or for some more fundamental reason? If it is just to save time, how much time does it save? 3. Is there any way to circumvent the preprocessed headers entirely to compile mpl with a different max arity? Jonathan
participants (1)
-
Jonathan Turkanis