
As far as Wave is concerned, the mentioned macro has no influence on the code generated for the library. You always can define BOOST_WAVE_SERIALIZATION to zero when compiling your code, even if the library was compiled with BOOST_WAVE_SERIALIZATION=1. The generated library has no dependency on Boost.Serialization.
Seems to me that unless it's essential to library function serialization support should always be turned off by default.
The job of a load function is to leave the object being loaded in a well defined state -- its invariants intact -- much like a constructor. Therefore, turning this functionality on or off doesn't make any more sense than turning a particular constructor on or off. You can define loading and saving without including any headers from boost serialization. Emil Dotchevski