$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r84116 - in trunk: boost/log/utility status
From: andrey.semashev_at_[hidden]
Date: 2013-05-02 15:37:33
Author: andysem
Date: 2013-05-02 15:37:32 EDT (Thu, 02 May 2013)
New Revision: 84116
URL: http://svn.boost.org/trac/boost/changeset/84116
Log:
Added a workaround for MSVC that allows to prevent conversion to void*.
Text files modified: 
   trunk/boost/log/utility/explicit_operator_bool.hpp |    17 +++++++++++++++++                       
   trunk/status/explicit-failures-markup.xml          |     8 --------                                
   2 files changed, 17 insertions(+), 8 deletions(-)
Modified: trunk/boost/log/utility/explicit_operator_bool.hpp
==============================================================================
--- trunk/boost/log/utility/explicit_operator_bool.hpp	(original)
+++ trunk/boost/log/utility/explicit_operator_bool.hpp	2013-05-02 15:37:32 EDT (Thu, 02 May 2013)
@@ -47,6 +47,8 @@
 
 namespace aux {
 
+#if !defined(_MSC_VER)
+
     struct unspecified_bool
     {
         // NOTE TO THE USER: If you see this in error messages then you tried
@@ -57,6 +59,21 @@
     };
     typedef void (*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*);
 
+#else
+
+    // MSVC is too eager to convert pointer to function to void* even when it shouldn't
+    struct unspecified_bool
+    {
+        // NOTE TO THE USER: If you see this in error messages then you tried
+        // to apply an unsupported operator on the object that supports
+        // explicit conversion to bool.
+        struct OPERATORS_NOT_ALLOWED;
+        void true_value(OPERATORS_NOT_ALLOWED*) {}
+    };
+    typedef void (unspecified_bool::*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*);
+
+#endif
+
 } // namespace aux
 
 BOOST_LOG_CLOSE_NAMESPACE // namespace log
Modified: trunk/status/explicit-failures-markup.xml
==============================================================================
--- trunk/status/explicit-failures-markup.xml	(original)
+++ trunk/status/explicit-failures-markup.xml	2013-05-02 15:37:32 EDT (Thu, 02 May 2013)
@@ -2564,14 +2564,6 @@
                                 Boost.Filesystem used by Boost.Log  does not support Windows Mobile.
                         </note>
                 </mark-unusable>
-		<mark-expected-failures>
-			<test name="util_explicit_operator_bool_conv_pvoid"/>
-			<toolset name="msvc-*"/>
-			<note author="Andrey Semashev" date="02 May 2013">
-				MSVC performs implicit conversion of pointers to members to void*,
-				which is against the standard (4.11, [conv.mem]) and is verified by this test.
-			</note>
-		</mark-expected-failures>
         </library>
 
     <!-- logic -->