$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r67743 - trunk/status
From: marshall_at_[hidden]
Date: 2011-01-06 19:45:23
Author: marshall
Date: 2011-01-06 19:45:21 EST (Thu, 06 Jan 2011)
New Revision: 67743
URL: http://svn.boost.org/trac/boost/changeset/67743
Log:
Applied patch; refs #2294
Text files modified: 
   trunk/status/explicit-failures-markup.xml |    36 ++++++++++++++++++++++++++++++++----    
   1 files changed, 32 insertions(+), 4 deletions(-)
Modified: trunk/status/explicit-failures-markup.xml
==============================================================================
--- trunk/status/explicit-failures-markup.xml	(original)
+++ trunk/status/explicit-failures-markup.xml	2011-01-06 19:45:21 EST (Thu, 06 Jan 2011)
@@ -2546,24 +2546,52 @@
             <toolset name="gcc-3.4.6_linux_ia64"/>
             <toolset name="gcc-4.2.*"/>
             <toolset name="gcc-4.1.2_sunos_i86pc"/>
-                <note author="Fernando Cacciola" refid="2"/>
+                <note author="Fernando Cacciola" id="optional-compiler-bug">
+                <p>This failure is caused by a compiler bug, and as far as we can 
+                tell, can't be worked around in the library, although we think 
+                the library might be made safer with respect to this bug.</p>
+
+                <p>Specifics: the following simple test fails when it should succeed.</p>
+                <pre>
+                #include <cassert>
+
+                int const x = 0;
+                struct A
+                {
+                   A(int const& y)
+                   {
+                     assert(&x == &y);
+                   }
+                };
+
+                int main()
+                {
+                    A a(x);  // direct initialization works fine
+                    A b = x; // copy initialization causes x to be copied before it is bound
+                }
+                </pre>
+
+                The possible safety enhancement would be to cause the constructor 
+                in question to be explicit for optional<T const&>; that 
+                would prevent copy initialization.
+                </note>
         </mark-expected-failures>
         <mark-expected-failures>
             <test name="optional_test_ref_fail1"/>
             <toolset name="borland-5.6*"/>
             <toolset name="borland-5.8*"/>
             <toolset name="borland-5.9*"/>
-            <note author="Fernando Cacciola" refid="2"/>
+            <note author="Fernando Cacciola" refid="optional-compiler-bug"/>
         </mark-expected-failures>
         <mark-expected-failures>
             <test name="optional_test_fail3a"/>
             <toolset name="gcc-3_3-darwin"/>
-            <note author="Fernando Cacciola" refid="2"/>
+            <note author="Fernando Cacciola" refid="optional-compiler-bug"/>
         </mark-expected-failures>
         <mark-expected-failures>
             <test name="optional_test_inplace_fail2"/>
             <toolset name="gcc-3_3-darwin"/>
-            <note author="Fernando Cacciola" refid="2"/>
+            <note author="Fernando Cacciola" refid="optional-compiler-bug"/>
         </mark-expected-failures>
     </library>