Boost logo

Boost :

Subject: Re: [boost] [config] additions for gcc 4.0.1 and IBM V11.1.0.0 due toMSM compile errors
From: John Maddock (boost.regex_at_[hidden])
Date: 2010-09-21 13:31:56

> I'm trying to see how far I can bring more compilers to compile MSM
> and I noticed that these 2 compilers might have a chance to work:
> - On gcc 4.0.1, most regression tests (for example:
> fail because in msm/back/state_machine.hpp, the nested struct
> add_state cannot access the private function set_containing_sm. IIUC
> this should be BOOST_NO_NESTED_FRIENDSHIP. Correct? If yes, could we
> add this macro for gcc 4.0.1 (unfortunately, no idea about 4.0.1 - 4.2
> but I suppose this will concern all 4.0.x)?
> - Again on the regression tests, the IBM compiler shows the same
> problem and furthermore does not accept that the struct:
> template <class Fsm,class Stt, class Event, class Compile> friend
> struct dispatch_table
> can have access to a private method of the befriended class. Again,
> IIUC, this seems to me to be BOOST_NO_MEMBER_TEMPLATE_FRIENDS.
> I don't find a file for this compiler in config/compiler. Am I missing
> something?

The compiler file for this compiler is boost/config/compiler/vacpp.hpp. If
in doubt about stuff like this, then go to the config tests and look at the
config_info results for the compiler in question - it gives you this
information and much much more:

The problem I have is that these compilers are passing the tests for these
macros. I've just committed a stricter version of the test for
BOOST_NO_NESTED_FRIENDSHIP in case this is an Apple GCC specific problem, as
both the updated tests and the msm tests pass for me here with Linux
gcc-4.0.4. I haven't tried gcc-4.0.1 on Linux as it means yet another gcc
build and install.... I'll leave that to you to try :-)

Do you have a stricter test case than we currently use for
BOOST_NO_MEMBER_TEMPLATE_FRIENDS that more closely represents MSM's usage?
Ah... just looked at the error messages and I'm not sure these are related
to that macro or not? You could try emailing the IBM test-runners
directly - they're quite helpful at tracking down issues like this - just
don't tell anyone ;-)

Cheers, John.

Boost list run by bdawes at, gregod at, cpdaniel at, john at