Hi,
This seems like a problem with the Solaris headers that should be handled by fixincludes.

The goal of the set of patches, apart from defining __cplusplus=199711L, was to start using the Solaris headers properly, without setting weird macros to ignore half of them or fixincluding half of their content out. Fixincluding this seems like a shame. Solaris headers declare std::tm, which is great. It just happens to break binary compatibility, so until the next great g++ ABI break, we need some kind of workaround. Telling the compiler that std::tm should be mangled as if it was ::tm looked like a simple enough solution.

We could of course surround the 4 struct definitions with:
#if __cplusplus >= 199711L
}
#endif

and:
#if __cplusplus >= 199711L
namespace std {
using ::thing;
#endif

Or the switch to __cplusplus=199711L will have to wait until the next ABI break...
All in all it seems to me that we are pretty close to be able to fix this old issue now and we are even in Stage 1, thus we can afford to take a bit of risk and handle possible fallout, thus I would recommend we do for now the above preprocessor dance (we are talking only about 4 instances) but controlled by a macro in os_defines.h, as Rainer correctly did already elsewhere. Rainer, can you test such change?

Thanks,
Paolo.

Reply via email to