forked from boostorg/type_traits
Intel compiler: do not use SFINAE with decltype/sizeof on deleted functions. Use fallback mode instead (refs #8802)
[SVN r85319]
This commit is contained in:
@ -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:
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -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>
|
||||
|
@ -22,9 +22,9 @@ does not marked with `BOOST_MOVABLE_BUT_NOT_COPYABLE(T)`.
|
||||
__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:
|
||||
|
||||
|
@ -26,7 +26,13 @@ namespace detail{
|
||||
|
||||
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>
|
||||
|
Reference in New Issue
Block a user