Eric, I changed the files. Should I zip them and post via mailinglist? Or should I submit them somewhere else? List of files which were changed: detail/core/linker.hpp detail/core/matcher/alternate_matcher.hpp detail/static/productions/alt_compilers.hpp detail/utility/any.hpp detail/utility/cons.hpp proto/op_base.hpp proto/proto_fwd.hpp xpressive.hpp One problem is that xpressive.hpp has info about boost version, but this is the mostly used file for inclusion. Therefore I believe this check fill fail even in boost 1.35: #if BOOST_VERSION >= 103500 # ifndef BOOST_XPRESSIVE_FUSION_V2 # define BOOST_XPRESSIVE_FUSION_V2 # endif //BOOST_XPRESSIVE_FUSION_V2 #endif //BOOST_VERSION I also executed your examples from the boost/lib directory and they produced in both cases same results. Your answer today is highly appreciated, since I will be on vacation from tomorrow on. thanks, Ovanes
On 9/24/07, Ovanes Markarian < om_boost@keywallet.com> wrote:
Eric,
sorry for the delay. I only now found some time to work on that issue: http://lists.boost.org/boost-users/2007/08/30120.php
After analysing your post and investigation what's going on, I would like to write my opinion:
changing xpressive_fwd.hpp or proto_fwd.will not help.
I grepped where fusion includes are used and need to enclose these in some conditional statements:
#ifdef BOOST_XPRESSIVE_FUSION_V2 # include ... //fusion 2 headers #else # include ... // fusion 1 headers #endif
Actually this can be done using some kind of a macro function like:
#include BOOST_XPRESSIVE_FUSION_ROOT(sequence/cons.hpp) ...
The macro function will deliver the root dependent on the predefined macros like: 1. if !defined XPRESSIVE_FUSION_ROOT and use V2 => choose the root for V2 else => choose the root for V1
As I found out the following files need to be changed: linker.hpp alternate_matcher.hpp alt_compilers.hpp any.hpp cons.hpp arg_traits.hpp op_base.hpp proto_fwd.hpp
If you give me your green light I will do it and submit a patch.
With Kind Regards, Ovanes