Index: borland.hpp =================================================================== --- borland.hpp (revision 59329) +++ borland.hpp (working copy) @@ -261,6 +261,12 @@ # define BOOST_NO_VOID_RETURNS #endif +// When doing value-initialization, the bytes of the object may need to be +// cleared (memset) before the object is constructed, because of a compiler issue: +// http://qc.embarcadero.com/wc/qcmain.aspx?rc=51854 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +#define BOOST_VALUE_INITIALIZATION_NEEDS_MEMSET + #define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__) Index: codegear.hpp =================================================================== --- codegear.hpp (revision 59329) +++ codegear.hpp (working copy) @@ -159,5 +159,12 @@ # define BOOST_NO_VOID_RETURNS #endif +// When doing value-initialization, the bytes of the object may need to be +// cleared (memset) before the object is constructed, because of a compiler issue: +// http://qc.embarcadero.com/wc/qcmain.aspx?rc=51854 +// Note: This issue is reported as fixed by build number 12.0.3140.16150 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +#define BOOST_VALUE_INITIALIZATION_NEEDS_MEMSET + #define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__) Index: gcc.hpp =================================================================== --- gcc.hpp (revision 59329) +++ gcc.hpp (working copy) @@ -69,6 +69,15 @@ # endif #endif +#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 ) +// When doing value-initialization, the bytes of the object may need to be +// cleared (memset) before the object is constructed, because of compiler issues: +// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4) +// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4) +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +#define BOOST_VALUE_INITIALIZATION_NEEDS_MEMSET +#endif + #ifndef __EXCEPTIONS # define BOOST_NO_EXCEPTIONS #endif Index: sunpro_cc.hpp =================================================================== --- sunpro_cc.hpp (revision 59329) +++ sunpro_cc.hpp (working copy) @@ -75,6 +75,14 @@ #define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_ADL_BARRIER +// When doing value-initialization, the bytes of the object may need to be +// cleared (memset) before the object is constructed, because of a compiler issue. +// Note: I do not know if this issue is there in all versions of the Sun compiler. +// (Niels Dekker, 28 Jan 2010) +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +#define BOOST_VALUE_INITIALIZATION_NEEDS_MEMSET + + // // C++0x features // Index: visualc.hpp =================================================================== --- visualc.hpp (revision 59329) +++ visualc.hpp (working copy) @@ -99,6 +99,13 @@ # define BOOST_NO_ADL_BARRIER #endif +// When doing value-initialization, the bytes of the object may need to be +// cleared (memset) before the object is constructed, because of a compiler issue: +// https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=100744 +// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues +#define BOOST_VALUE_INITIALIZATION_NEEDS_MEMSET + + #if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0 # define BOOST_NO_INITIALIZER_LISTS #endif