From cd8f85afee1792f2051164a6ca3b98c0a06632f3 Mon Sep 17 00:00:00 2001 From: Niels Dekker Date: Tue, 16 Oct 2007 17:00:28 +0000 Subject: [PATCH] Disabled MSVC warning C4345, in response to Gennadiy Rozental, Boost Developer mailing list, "[utility] value_init warning", October 14, 2007. Push'n'pop reminder from Paul A Bristow taken into account. [SVN r40088] --- include/boost/utility/value_init.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/include/boost/utility/value_init.hpp b/include/boost/utility/value_init.hpp index 4cd8e1b..b6d1246 100644 --- a/include/boost/utility/value_init.hpp +++ b/include/boost/utility/value_init.hpp @@ -31,6 +31,16 @@ #include #include +#ifdef BOOST_MSVC +#pragma warning(push) +#if _MSC_VER >= 1310 +// When using MSVC 7.1 or higher, placement new, "new (&x) T()", may trigger warning C4345: +// "behavior change: an object of POD type constructed with an initializer of the form () +// will be default-initialized". There is no need to worry about this, though. +#pragma warning(disable: 4345) +#endif +#endif + namespace boost { namespace vinit_detail { @@ -89,6 +99,11 @@ class non_const_T_base mutable typename ::boost::aligned_storage::value>::type x; } ; +#ifdef BOOST_MSVC +// Restores the state of warning C4345. +#pragma warning(pop) +#endif + #else namespace boost {