Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r85319 - in trunk: boost/type_traits libs/type_traits/doc libs/type_traits/doc/html libs/type_traits/doc/html/boost_typetraits/reference libs/type_traits/doc/html/index
From: antoshkka_at_[hidden]
Date: 2013-08-12 09:25:02


Author: apolukhin
Date: 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013)
New Revision: 85319
URL: http://svn.boost.org/trac/boost/changeset/85319

Log:
Intel compiler: do not use SFINAE with decltype/sizeof on deleted functions. Use fallback mode instead (refs #8802)

Text files modified:
   trunk/boost/type_traits/is_copy_constructible.hpp | 8 +++++++-
   trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_copy_constructible.html | 6 +++---
   trunk/libs/type_traits/doc/html/index.html | 2 +-
   trunk/libs/type_traits/doc/html/index/s11.html | 2 +-
   trunk/libs/type_traits/doc/html/index/s12.html | 2 +-
   trunk/libs/type_traits/doc/html/index/s13.html | 2 +-
   trunk/libs/type_traits/doc/html/index/s14.html | 2 +-
   trunk/libs/type_traits/doc/is_copy_constructible.qbk | 6 +++---
   8 files changed, 18 insertions(+), 12 deletions(-)

Modified: trunk/boost/type_traits/is_copy_constructible.hpp
==============================================================================
--- trunk/boost/type_traits/is_copy_constructible.hpp Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/boost/type_traits/is_copy_constructible.hpp 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -26,7 +26,13 @@
 
 template <bool DerivedFromNoncopyable, class T>
 struct is_copy_constructible_impl2 {
-#ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS
+
+// Intel compiler has problems with SFINAE for copy constructors and deleted functions:
+//
+// error: function *function_name* cannot be referenced -- it is a deleted function
+// static boost::type_traits::yes_type test(T1&, decltype(T1(boost::declval<T1&>()))* = 0);
+// ^
+#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_INTEL_CXX_VERSION)
 
 #ifdef BOOST_NO_CXX11_DECLTYPE
     template <class T1>

Modified: trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_copy_constructible.html
==============================================================================
--- trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_copy_constructible.html Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/libs/type_traits/doc/html/boost_typetraits/reference/is_copy_constructible.html 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -51,9 +51,9 @@
       </p>
 <p>
         If your compiler does not support C++11 deleted functions (<code class="computeroutput"><span class="special">=</span> <span class="keyword">delete</span></code>)
- derive your classes from <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">noncopyable</span></code>
- or mark them with <code class="computeroutput"><span class="identifier">BOOST_MOVABLE_BUT_NOT_COPYABLE</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code>
- to show that class is noncopyable.
+ or does not support SFINAE for the deleted constructors, then derive your
+ classes from <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">noncopyable</span></code> or mark them with <code class="computeroutput"><span class="identifier">BOOST_MOVABLE_BUT_NOT_COPYABLE</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span></code> to show
+ that class is noncopyable.
       </p>
 <p>
         Trait does not care about access modifiers, so if you see errors like this:

Modified: trunk/libs/type_traits/doc/html/index.html
==============================================================================
--- trunk/libs/type_traits/doc/html/index.html Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/libs/type_traits/doc/html/index.html 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -217,7 +217,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: March 02, 2013 at 12:30:44 +0400</small></p></td>
+<td align="left"><p><small>Last revised: July 11, 2013 at 14:27:49 +0400</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/type_traits/doc/html/index/s11.html
==============================================================================
--- trunk/libs/type_traits/doc/html/index/s11.html Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/libs/type_traits/doc/html/index/s11.html 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -24,7 +24,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idp54323824"></a>Class Index</h2></div></div></div>
+<a name="idp54046160"></a>Class Index</h2></div></div></div>
 <p><a class="link" href="s11.html#idx_id_0">A</a> <a class="link" href="s11.html#idx_id_2">C</a> <a class="link" href="s11.html#idx_id_3">D</a> <a class="link" href="s11.html#idx_id_4">E</a> <a class="link" href="s11.html#idx_id_5">F</a> <a class="link" href="s11.html#idx_id_6">H</a> <a class="link" href="s11.html#idx_id_7">I</a> <a class="link" href="s11.html#idx_id_8">M</a> <a class="link" href="s11.html#idx_id_9">N</a> <a class="link" href="s11.html#idx_id_10">O</a> <a class="link" href="s11.html#idx_id_11">P</a> <a class="link" href="s11.html#idx_id_12">R</a> <a class="link" href="s11.html#idx_id_13">T</a></p>
 <div class="variablelist"><dl>
 <dt>

Modified: trunk/libs/type_traits/doc/html/index/s12.html
==============================================================================
--- trunk/libs/type_traits/doc/html/index/s12.html Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/libs/type_traits/doc/html/index/s12.html 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -24,7 +24,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idp54709840"></a>Typedef Index</h2></div></div></div>
+<a name="idp54432080"></a>Typedef Index</h2></div></div></div>
 <p><a class="link" href="s12.html#idx_id_20">F</a> <a class="link" href="s12.html#idx_id_27">R</a> <a class="link" href="s12.html#idx_id_28">T</a></p>
 <div class="variablelist"><dl>
 <dt>

Modified: trunk/libs/type_traits/doc/html/index/s13.html
==============================================================================
--- trunk/libs/type_traits/doc/html/index/s13.html Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/libs/type_traits/doc/html/index/s13.html 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -24,7 +24,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idp54737728"></a>Macro Index</h2></div></div></div>
+<a name="idp54460048"></a>Macro Index</h2></div></div></div>
 <p><a class="link" href="s13.html#idx_id_31">B</a></p>
 <div class="variablelist"><dl>
 <dt>

Modified: trunk/libs/type_traits/doc/html/index/s14.html
==============================================================================
--- trunk/libs/type_traits/doc/html/index/s14.html Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/libs/type_traits/doc/html/index/s14.html 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -23,7 +23,7 @@
 </div>
 <div class="section">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="idp54829696"></a>Index</h2></div></div></div>
+<a name="idp54552112"></a>Index</h2></div></div></div>
 <p><a class="link" href="s14.html#idx_id_45">A</a> <a class="link" href="s14.html#idx_id_46">B</a> <a class="link" href="s14.html#idx_id_47">C</a> <a class="link" href="s14.html#idx_id_48">D</a> <a class="link" href="s14.html#idx_id_49">E</a> <a class="link" href="s14.html#idx_id_50">F</a> <a class="link" href="s14.html#idx_id_51">H</a> <a class="link" href="s14.html#idx_id_52">I</a> <a class="link" href="s14.html#idx_id_53">M</a> <a class="link" href="s14.html#idx_id_54">N</a> <a class="link" href="s14.html#idx_id_55">O</a> <a class="link" href="s14.html#idx_id_56">P</a> <a class="link" href="s14.html#idx_id_57">R</a> <a class="link" href="s14.html#idx_id_58">T</a> <a class="link" href="s14.html#idx_id_59">U</a></p>
 <div class="variablelist"><dl>
 <dt>

Modified: trunk/libs/type_traits/doc/is_copy_constructible.qbk
==============================================================================
--- trunk/libs/type_traits/doc/is_copy_constructible.qbk Mon Aug 12 09:23:35 2013 (r85318)
+++ trunk/libs/type_traits/doc/is_copy_constructible.qbk 2013-08-12 09:25:01 EDT (Mon, 12 Aug 2013) (r85319)
@@ -22,9 +22,9 @@
 __compat If the compiler does not support partial-specialization of class
 templates, then this template can not be used.
 
-If your compiler does not support C++11 deleted functions (`= delete`) derive
-your classes from `boost::noncopyable` or mark them with `BOOST_MOVABLE_BUT_NOT_COPYABLE(T)`
-to show that class is noncopyable.
+If your compiler does not support C++11 deleted functions (`= delete`) or does not support
+SFINAE for the deleted constructors, then derive your classes from `boost::noncopyable` or
+mark them with `BOOST_MOVABLE_BUT_NOT_COPYABLE(T)` to show that class is noncopyable.
 
 Trait does not care about access modifiers, so if you see errors like this:
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk