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.