mirror of
https://github.com/boostorg/optional.git
synced 2025-07-25 18:17:16 +02:00
Merge branch 'develop'
This commit is contained in:
@ -196,11 +196,10 @@ They are empty, trivially copyable classes with disabled default constructor.
|
|||||||
|
|
||||||
bool operator!() const noexcept ; ``[link reference_optional_operator_not __GO_TO__]``
|
bool operator!() const noexcept ; ``[link reference_optional_operator_not __GO_TO__]``
|
||||||
|
|
||||||
// deprecated methods
|
|
||||||
|
|
||||||
// (deprecated)
|
|
||||||
void reset() noexcept ; ``[link reference_optional_reset __GO_TO__]``
|
void reset() noexcept ; ``[link reference_optional_reset __GO_TO__]``
|
||||||
|
|
||||||
|
// deprecated methods
|
||||||
|
|
||||||
// (deprecated)
|
// (deprecated)
|
||||||
void reset ( T const& ) ; ``[link reference_optional_reset_value __GO_TO__]``
|
void reset ( T const& ) ; ``[link reference_optional_reset_value __GO_TO__]``
|
||||||
|
|
||||||
@ -275,11 +274,10 @@ They are empty, trivially copyable classes with disabled default constructor.
|
|||||||
|
|
||||||
bool operator!() const noexcept ; ``[link reference_optional_ref_operator_not __GO_TO__]``
|
bool operator!() const noexcept ; ``[link reference_optional_ref_operator_not __GO_TO__]``
|
||||||
|
|
||||||
// deprecated methods
|
|
||||||
|
|
||||||
// (deprecated)
|
|
||||||
void reset() noexcept ; ``[link reference_optional_ref_reset __GO_TO__]``
|
void reset() noexcept ; ``[link reference_optional_ref_reset __GO_TO__]``
|
||||||
|
|
||||||
|
// deprecated methods
|
||||||
|
|
||||||
// (deprecated)
|
// (deprecated)
|
||||||
template<class R> void reset ( R && r ) noexcept ; ``[link reference_optional_ref_reset_value __GO_TO__]``
|
template<class R> void reset ( R && r ) noexcept ; ``[link reference_optional_ref_reset_value __GO_TO__]``
|
||||||
|
|
||||||
|
@ -541,7 +541,7 @@ __SPACE__
|
|||||||
[#reference_optional_reset]
|
[#reference_optional_reset]
|
||||||
|
|
||||||
[: `void optional<T>::reset() noexcept ;`]
|
[: `void optional<T>::reset() noexcept ;`]
|
||||||
* [*Deprecated:] Same as `operator=( none_t );`
|
* [*Effects:] Same as `operator=( none_t );`
|
||||||
|
|
||||||
__SPACE__
|
__SPACE__
|
||||||
|
|
||||||
@ -1129,8 +1129,7 @@ __SPACE__
|
|||||||
|
|
||||||
[#reference_optional_ref_reset]
|
[#reference_optional_ref_reset]
|
||||||
[: `void optional<T&>::reset() noexcept;`]
|
[: `void optional<T&>::reset() noexcept;`]
|
||||||
* [*Effects:] Use `*this = none` instead.
|
* [*Effects:] Same as `*this = none`.
|
||||||
* [*Remarks:] This function is depprecated.
|
|
||||||
|
|
||||||
__SPACE__
|
__SPACE__
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[/
|
[/
|
||||||
Boost.Optional
|
Boost.Optional
|
||||||
|
|
||||||
Copyright (c) 2015, 2016 Andrzej Krzemienski
|
Copyright (c) 2015 - 2018 Andrzej Krzemienski
|
||||||
|
|
||||||
Distributed under the Boost Software License, Version 1.0.
|
Distributed under the Boost Software License, Version 1.0.
|
||||||
(See accompanying file LICENSE_1_0.txt or copy at
|
(See accompanying file LICENSE_1_0.txt or copy at
|
||||||
@ -11,6 +11,11 @@
|
|||||||
|
|
||||||
[section:relnotes Release Notes]
|
[section:relnotes Release Notes]
|
||||||
|
|
||||||
|
[heading Boost Release 1.69]
|
||||||
|
|
||||||
|
* Remove deprecation mark from `reset()` method (without arguments).
|
||||||
|
* Fixed [@https://github.com/boostorg/optional/issues/59 issue #59].
|
||||||
|
|
||||||
[heading Boost Release 1.68]
|
[heading Boost Release 1.68]
|
||||||
|
|
||||||
* Added member function `has_value()` for compatibility with `std::optional` ([@https://github.com/boostorg/optional/issues/52 issue #52]).
|
* Added member function `has_value()` for compatibility with `std::optional` ([@https://github.com/boostorg/optional/issues/52 issue #52]).
|
||||||
|
@ -486,14 +486,9 @@
|
|||||||
<a name="reference_optional_ref_reset"></a><div class="blockquote"><blockquote class="blockquote"><p>
|
<a name="reference_optional_ref_reset"></a><div class="blockquote"><blockquote class="blockquote"><p>
|
||||||
<code class="computeroutput"><span class="keyword">void</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">T</span><span class="special">&>::</span><span class="identifier">reset</span><span class="special">()</span> <span class="keyword">noexcept</span><span class="special">;</span></code>
|
<code class="computeroutput"><span class="keyword">void</span> <span class="identifier">optional</span><span class="special"><</span><span class="identifier">T</span><span class="special">&>::</span><span class="identifier">reset</span><span class="special">()</span> <span class="keyword">noexcept</span><span class="special">;</span></code>
|
||||||
</p></blockquote></div>
|
</p></blockquote></div>
|
||||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||||
<li class="listitem">
|
<span class="bold"><strong>Effects:</strong></span> Same as <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span> <span class="special">=</span> <span class="identifier">none</span></code>.
|
||||||
<span class="bold"><strong>Effects:</strong></span> Use <code class="computeroutput"><span class="special">*</span><span class="keyword">this</span> <span class="special">=</span> <span class="identifier">none</span></code> instead.
|
</li></ul></div>
|
||||||
</li>
|
|
||||||
<li class="listitem">
|
|
||||||
<span class="bold"><strong>Remarks:</strong></span> This function is depprecated.
|
|
||||||
</li>
|
|
||||||
</ul></div>
|
|
||||||
<p>
|
<p>
|
||||||
<span class="inlinemediaobject"><img src="../../../images/space.png" alt="space"></span>
|
<span class="inlinemediaobject"><img src="../../../images/space.png" alt="space"></span>
|
||||||
</p>
|
</p>
|
||||||
|
@ -1199,8 +1199,8 @@
|
|||||||
<span class="special">;</span></code>
|
<span class="special">;</span></code>
|
||||||
</p></blockquote></div>
|
</p></blockquote></div>
|
||||||
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
|
||||||
<span class="bold"><strong>Deprecated:</strong></span> Same as <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span>
|
<span class="bold"><strong>Effects:</strong></span> Same as <code class="computeroutput"><span class="keyword">operator</span><span class="special">=(</span> <span class="identifier">none_t</span>
|
||||||
<span class="identifier">none_t</span> <span class="special">);</span></code>
|
<span class="special">);</span></code>
|
||||||
</li></ul></div>
|
</li></ul></div>
|
||||||
<p>
|
<p>
|
||||||
<span class="inlinemediaobject"><img src="../../../images/space.png" alt="space"></span>
|
<span class="inlinemediaobject"><img src="../../../images/space.png" alt="space"></span>
|
||||||
|
@ -84,11 +84,10 @@
|
|||||||
|
|
||||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_references.html#reference_optional_ref_operator_not"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_references.html#reference_optional_ref_operator_not"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
||||||
|
|
||||||
<span class="comment">// deprecated methods</span>
|
|
||||||
|
|
||||||
<span class="comment">// (deprecated)</span>
|
|
||||||
<span class="keyword">void</span> <span class="identifier">reset</span><span class="special">()</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_references.html#reference_optional_ref_reset"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
<span class="keyword">void</span> <span class="identifier">reset</span><span class="special">()</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_references.html#reference_optional_ref_reset"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
||||||
|
|
||||||
|
<span class="comment">// deprecated methods</span>
|
||||||
|
|
||||||
<span class="comment">// (deprecated)</span>
|
<span class="comment">// (deprecated)</span>
|
||||||
<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">reset</span> <span class="special">(</span> <span class="identifier">R</span> <span class="special">&&</span> <span class="identifier">r</span> <span class="special">)</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_references.html#reference_optional_ref_reset_value"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">reset</span> <span class="special">(</span> <span class="identifier">R</span> <span class="special">&&</span> <span class="identifier">r</span> <span class="special">)</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_references.html#reference_optional_ref_reset_value"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
||||||
|
|
||||||
|
@ -122,11 +122,10 @@
|
|||||||
|
|
||||||
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_values.html#reference_optional_operator_not"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
<span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">!()</span> <span class="keyword">const</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_values.html#reference_optional_operator_not"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
||||||
|
|
||||||
<span class="comment">// deprecated methods</span>
|
|
||||||
|
|
||||||
<span class="comment">// (deprecated)</span>
|
|
||||||
<span class="keyword">void</span> <span class="identifier">reset</span><span class="special">()</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_values.html#reference_optional_reset"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
<span class="keyword">void</span> <span class="identifier">reset</span><span class="special">()</span> <span class="keyword">noexcept</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_values.html#reference_optional_reset"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
||||||
|
|
||||||
|
<span class="comment">// deprecated methods</span>
|
||||||
|
|
||||||
<span class="comment">// (deprecated)</span>
|
<span class="comment">// (deprecated)</span>
|
||||||
<span class="keyword">void</span> <span class="identifier">reset</span> <span class="special">(</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="special">)</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_values.html#reference_optional_reset_value"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
<span class="keyword">void</span> <span class="identifier">reset</span> <span class="special">(</span> <span class="identifier">T</span> <span class="keyword">const</span><span class="special">&</span> <span class="special">)</span> <span class="special">;</span> <a class="link" href="detailed_semantics___optional_values.html#reference_optional_reset_value"><span class="inlinemediaobject"><img src="../../../images/callouts/R.png" alt="R"></span></a>
|
||||||
|
|
||||||
|
@ -28,6 +28,20 @@
|
|||||||
</h2></div></div></div>
|
</h2></div></div></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h0"></a>
|
<a name="boost_optional.relnotes.h0"></a>
|
||||||
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_69"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_69">Boost
|
||||||
|
Release 1.69</a>
|
||||||
|
</h4>
|
||||||
|
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
|
||||||
|
<li class="listitem">
|
||||||
|
Remove deprecation mark from <code class="computeroutput"><span class="identifier">reset</span><span class="special">()</span></code> method (without arguments).
|
||||||
|
</li>
|
||||||
|
<li class="listitem">
|
||||||
|
Fixed <a href="https://github.com/boostorg/optional/issues/59" target="_top">issue
|
||||||
|
#59</a>.
|
||||||
|
</li>
|
||||||
|
</ul></div>
|
||||||
|
<h4>
|
||||||
|
<a name="boost_optional.relnotes.h1"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_68"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_68">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_68"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_68">Boost
|
||||||
Release 1.68</a>
|
Release 1.68</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -44,7 +58,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></div>
|
</ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h1"></a>
|
<a name="boost_optional.relnotes.h2"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_67"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_67">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_67"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_67">Boost
|
||||||
Release 1.67</a>
|
Release 1.67</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -58,7 +72,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></div>
|
</ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h2"></a>
|
<a name="boost_optional.relnotes.h3"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_66"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_66">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_66"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_66">Boost
|
||||||
Release 1.66</a>
|
Release 1.66</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -76,7 +90,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></div>
|
</ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h3"></a>
|
<a name="boost_optional.relnotes.h4"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_63"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_63">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_63"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_63">Boost
|
||||||
Release 1.63</a>
|
Release 1.63</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -100,7 +114,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></div>
|
</ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h4"></a>
|
<a name="boost_optional.relnotes.h5"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_62"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_62">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_62"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_62">Boost
|
||||||
Release 1.62</a>
|
Release 1.62</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -108,7 +122,7 @@
|
|||||||
Fixed <a href="https://svn.boost.org/trac/boost/ticket/12179" target="_top">Trac #12179</a>.
|
Fixed <a href="https://svn.boost.org/trac/boost/ticket/12179" target="_top">Trac #12179</a>.
|
||||||
</li></ul></div>
|
</li></ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h5"></a>
|
<a name="boost_optional.relnotes.h6"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_61"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_61">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_61"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_61">Boost
|
||||||
Release 1.61</a>
|
Release 1.61</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -151,7 +165,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></div>
|
</ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h6"></a>
|
<a name="boost_optional.relnotes.h7"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_60"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_60">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_60"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_60">Boost
|
||||||
Release 1.60</a>
|
Release 1.60</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -162,7 +176,7 @@
|
|||||||
#11203</a>.
|
#11203</a>.
|
||||||
</li></ul></div>
|
</li></ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h7"></a>
|
<a name="boost_optional.relnotes.h8"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_59"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_59">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_59"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_59">Boost
|
||||||
Release 1.59</a>
|
Release 1.59</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -176,7 +190,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></div>
|
</ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h8"></a>
|
<a name="boost_optional.relnotes.h9"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_58"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_58">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_58"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_58">Boost
|
||||||
Release 1.58</a>
|
Release 1.58</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -212,7 +226,7 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul></div>
|
</ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h9"></a>
|
<a name="boost_optional.relnotes.h10"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_57"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_57">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_57"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_57">Boost
|
||||||
Release 1.57</a>
|
Release 1.57</a>
|
||||||
</h4>
|
</h4>
|
||||||
@ -222,7 +236,7 @@
|
|||||||
to fix C++03 compile error on <code class="computeroutput"><span class="identifier">logic_error</span><span class="special">(</span><span class="string">"..."</span><span class="special">)</span></code>"</em></span>.
|
to fix C++03 compile error on <code class="computeroutput"><span class="identifier">logic_error</span><span class="special">(</span><span class="string">"..."</span><span class="special">)</span></code>"</em></span>.
|
||||||
</li></ul></div>
|
</li></ul></div>
|
||||||
<h4>
|
<h4>
|
||||||
<a name="boost_optional.relnotes.h10"></a>
|
<a name="boost_optional.relnotes.h11"></a>
|
||||||
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_56"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_56">Boost
|
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_56"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_56">Boost
|
||||||
Release 1.56</a>
|
Release 1.56</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
@ -145,7 +145,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||||
<td align="left"><p><small>Last revised: July 02, 2018 at 21:10:01 GMT</small></p></td>
|
<td align="left"><p><small>Last revised: October 29, 2018 at 21:06:01 GMT</small></p></td>
|
||||||
<td align="right"><div class="copyright-footer"></div></td>
|
<td align="right"><div class="copyright-footer"></div></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -14,10 +14,9 @@
|
|||||||
#define BOOST_OPTIONAL_DETAIL_OLD_OPTIONAL_IMPLEMENTATION_AJK_28JAN2015_HPP
|
#define BOOST_OPTIONAL_DETAIL_OLD_OPTIONAL_IMPLEMENTATION_AJK_28JAN2015_HPP
|
||||||
|
|
||||||
#include <boost/detail/reference_content.hpp>
|
#include <boost/detail/reference_content.hpp>
|
||||||
#include <boost/mpl/bool.hpp>
|
|
||||||
#include <boost/mpl/if.hpp>
|
|
||||||
#include <boost/mpl/not.hpp>
|
|
||||||
#include <boost/type_traits/is_reference.hpp>
|
#include <boost/type_traits/is_reference.hpp>
|
||||||
|
#include <boost/type_traits/integral_constant.hpp>
|
||||||
|
#include <boost/type_traits/conditional.hpp>
|
||||||
|
|
||||||
namespace boost {
|
namespace boost {
|
||||||
|
|
||||||
@ -96,13 +95,13 @@ class optional_base : public optional_tag
|
|||||||
|
|
||||||
typedef T value_type ;
|
typedef T value_type ;
|
||||||
|
|
||||||
typedef mpl::true_ is_reference_tag ;
|
typedef true_type is_reference_tag ;
|
||||||
typedef mpl::false_ is_not_reference_tag ;
|
typedef false_type is_not_reference_tag ;
|
||||||
|
|
||||||
typedef BOOST_DEDUCED_TYPENAME is_reference<T>::type is_reference_predicate ;
|
typedef BOOST_DEDUCED_TYPENAME is_reference<T>::type is_reference_predicate ;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
typedef BOOST_DEDUCED_TYPENAME mpl::if_<is_reference_predicate,types_when_ref,types_when_not_ref>::type types ;
|
typedef BOOST_DEDUCED_TYPENAME conditional<is_reference_predicate::value,types_when_ref,types_when_not_ref>::type types ;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
typedef BOOST_DEDUCED_TYPENAME types::reference_type reference_type ;
|
typedef BOOST_DEDUCED_TYPENAME types::reference_type reference_type ;
|
||||||
@ -333,7 +332,7 @@ class optional_base : public optional_tag
|
|||||||
|
|
||||||
public :
|
public :
|
||||||
|
|
||||||
// **DEPPRECATED** Destroys the current value, if any, leaving this UNINITIALIZED
|
// Destroys the current value, if any, leaving this UNINITIALIZED
|
||||||
// No-throw (assuming T::~T() doesn't)
|
// No-throw (assuming T::~T() doesn't)
|
||||||
void reset() BOOST_NOEXCEPT { destroy(); }
|
void reset() BOOST_NOEXCEPT { destroy(); }
|
||||||
|
|
||||||
@ -422,7 +421,7 @@ class optional_base : public optional_tag
|
|||||||
template<class Expr>
|
template<class Expr>
|
||||||
void construct ( Expr&& factory, in_place_factory_base const* )
|
void construct ( Expr&& factory, in_place_factory_base const* )
|
||||||
{
|
{
|
||||||
BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
|
BOOST_STATIC_ASSERT ( !is_reference_predicate::value ) ;
|
||||||
boost_optional_detail::construct<value_type>(factory, m_storage.address());
|
boost_optional_detail::construct<value_type>(factory, m_storage.address());
|
||||||
m_initialized = true ;
|
m_initialized = true ;
|
||||||
}
|
}
|
||||||
@ -431,7 +430,7 @@ class optional_base : public optional_tag
|
|||||||
template<class Expr>
|
template<class Expr>
|
||||||
void construct ( Expr&& factory, typed_in_place_factory_base const* )
|
void construct ( Expr&& factory, typed_in_place_factory_base const* )
|
||||||
{
|
{
|
||||||
BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
|
BOOST_STATIC_ASSERT ( !is_reference_predicate::value ) ;
|
||||||
factory.apply(m_storage.address()) ;
|
factory.apply(m_storage.address()) ;
|
||||||
m_initialized = true ;
|
m_initialized = true ;
|
||||||
}
|
}
|
||||||
@ -456,7 +455,7 @@ class optional_base : public optional_tag
|
|||||||
template<class Expr>
|
template<class Expr>
|
||||||
void construct ( Expr const& factory, in_place_factory_base const* )
|
void construct ( Expr const& factory, in_place_factory_base const* )
|
||||||
{
|
{
|
||||||
BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
|
BOOST_STATIC_ASSERT ( !is_reference_predicate::value ) ;
|
||||||
boost_optional_detail::construct<value_type>(factory, m_storage.address());
|
boost_optional_detail::construct<value_type>(factory, m_storage.address());
|
||||||
m_initialized = true ;
|
m_initialized = true ;
|
||||||
}
|
}
|
||||||
@ -465,7 +464,7 @@ class optional_base : public optional_tag
|
|||||||
template<class Expr>
|
template<class Expr>
|
||||||
void construct ( Expr const& factory, typed_in_place_factory_base const* )
|
void construct ( Expr const& factory, typed_in_place_factory_base const* )
|
||||||
{
|
{
|
||||||
BOOST_STATIC_ASSERT ( ::boost::mpl::not_<is_reference_predicate>::value ) ;
|
BOOST_STATIC_ASSERT ( !is_reference_predicate::value ) ;
|
||||||
factory.apply(m_storage.address()) ;
|
factory.apply(m_storage.address()) ;
|
||||||
m_initialized = true ;
|
m_initialized = true ;
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ class tc_optional_base : public optional_tag
|
|||||||
// Assigns from another optional<T> (deep-copies the rhs value)
|
// Assigns from another optional<T> (deep-copies the rhs value)
|
||||||
void assign ( tc_optional_base const& rhs )
|
void assign ( tc_optional_base const& rhs )
|
||||||
{
|
{
|
||||||
this->operator=(rhs);
|
*this = rhs;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Assigns from another _convertible_ optional<U> (deep-copies the rhs value)
|
// Assigns from another _convertible_ optional<U> (deep-copies the rhs value)
|
||||||
@ -127,7 +127,7 @@ class tc_optional_base : public optional_tag
|
|||||||
|
|
||||||
public :
|
public :
|
||||||
|
|
||||||
// **DEPPRECATED** Destroys the current value, if any, leaving this UNINITIALIZED
|
// Destroys the current value, if any, leaving this UNINITIALIZED
|
||||||
// No-throw (assuming T::~T() doesn't)
|
// No-throw (assuming T::~T() doesn't)
|
||||||
void reset() BOOST_NOEXCEPT { destroy(); }
|
void reset() BOOST_NOEXCEPT { destroy(); }
|
||||||
|
|
||||||
|
@ -378,7 +378,7 @@ class optional_base : public optional_tag
|
|||||||
|
|
||||||
public :
|
public :
|
||||||
|
|
||||||
// **DEPPRECATED** Destroys the current value, if any, leaving this UNINITIALIZED
|
// Destroys the current value, if any, leaving this UNINITIALIZED
|
||||||
// No-throw (assuming T::~T() doesn't)
|
// No-throw (assuming T::~T() doesn't)
|
||||||
void reset() BOOST_NOEXCEPT { destroy(); }
|
void reset() BOOST_NOEXCEPT { destroy(); }
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import testing ;
|
|||||||
{
|
{
|
||||||
test-suite optional :
|
test-suite optional :
|
||||||
[ run optional_test.cpp ]
|
[ run optional_test.cpp ]
|
||||||
|
[ run optional_test_assign.cpp ]
|
||||||
[ run optional_test_swap.cpp ]
|
[ run optional_test_swap.cpp ]
|
||||||
[ run optional_test_conversions_from_U.cpp ]
|
[ run optional_test_conversions_from_U.cpp ]
|
||||||
[ run optional_test_convert_from_T.cpp ]
|
[ run optional_test_convert_from_T.cpp ]
|
||||||
@ -49,6 +50,7 @@ import testing ;
|
|||||||
[ run optional_test_member_T.cpp ]
|
[ run optional_test_member_T.cpp ]
|
||||||
[ run optional_test_tc_base.cpp ]
|
[ run optional_test_tc_base.cpp ]
|
||||||
[ compile optional_test_sfinae_friendly_ctor.cpp ]
|
[ compile optional_test_sfinae_friendly_ctor.cpp ]
|
||||||
|
[ compile-fail optional_test_fail_const_swap.cpp ]
|
||||||
[ compile-fail optional_test_ref_convert_assign_const_int_prevented.cpp ]
|
[ compile-fail optional_test_ref_convert_assign_const_int_prevented.cpp ]
|
||||||
[ compile-fail optional_test_fail1.cpp ]
|
[ compile-fail optional_test_fail1.cpp ]
|
||||||
[ compile-fail optional_test_fail3a.cpp ]
|
[ compile-fail optional_test_fail3a.cpp ]
|
||||||
|
30
test/optional_test_assign.cpp
Normal file
30
test/optional_test_assign.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// Copyright (C) 2018 Andrzej Krzemienski.
|
||||||
|
//
|
||||||
|
// Use, modification, and distribution is subject to the Boost Software
|
||||||
|
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/lib/optional for documentation.
|
||||||
|
//
|
||||||
|
// You are welcome to contact the author at:
|
||||||
|
// akrzemi1@gmail.com
|
||||||
|
|
||||||
|
#include "boost/core/lightweight_test.hpp"
|
||||||
|
#include "boost/optional/optional.hpp"
|
||||||
|
|
||||||
|
void test_assignment_to_empty()
|
||||||
|
{
|
||||||
|
// this test used to fail on GCC 8.1.0/8.2.0/9.0.0 with -std=c++98
|
||||||
|
boost::optional<int> oa, ob(1);
|
||||||
|
BOOST_TEST(!oa);
|
||||||
|
BOOST_TEST(ob);
|
||||||
|
|
||||||
|
oa = ob;
|
||||||
|
BOOST_TEST(oa);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
test_assignment_to_empty();
|
||||||
|
return boost::report_errors();
|
||||||
|
}
|
@ -1,4 +1,6 @@
|
|||||||
// Copyright 2017 Peter Dimov
|
// Copyright 2017 Peter Dimov
|
||||||
|
// Copyright 2017 Vinnie NotDefaultConstructible
|
||||||
|
// Copyright 2018 Andrzej Krzemienski
|
||||||
//
|
//
|
||||||
// Distributed under the Boost Software License, Version 1.0.
|
// Distributed under the Boost Software License, Version 1.0.
|
||||||
//
|
//
|
||||||
@ -19,8 +21,8 @@ int main()
|
|||||||
|
|
||||||
class basic_multi_buffer;
|
class basic_multi_buffer;
|
||||||
|
|
||||||
class const_buffers_type
|
class const_buffers_type // a similar declaration in boost.beast had problem
|
||||||
{
|
{ // with boost opitonal
|
||||||
basic_multi_buffer const* b_;
|
basic_multi_buffer const* b_;
|
||||||
|
|
||||||
friend class basic_multi_buffer;
|
friend class basic_multi_buffer;
|
||||||
@ -29,16 +31,36 @@ class const_buffers_type
|
|||||||
const_buffers_type(basic_multi_buffer const& b);
|
const_buffers_type(basic_multi_buffer const& b);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
const_buffers_type() = delete;
|
const_buffers_type() = delete;
|
||||||
const_buffers_type(const_buffers_type const&) = default;
|
const_buffers_type(const_buffers_type const&) = default;
|
||||||
const_buffers_type& operator=(const_buffers_type const&) = default;
|
const_buffers_type& operator=(const_buffers_type const&) = default;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void test_beast_example()
|
||||||
|
{
|
||||||
|
// test if it even compiles
|
||||||
|
boost::optional< std::pair<const_buffers_type, int> > opt, opt2;
|
||||||
|
opt = opt2;
|
||||||
|
(void)opt;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct NotDefaultConstructible // minimal class exposing the problem
|
||||||
|
{
|
||||||
|
NotDefaultConstructible() = delete;
|
||||||
|
};
|
||||||
|
|
||||||
|
void test_assign_for_non_default_constructible()
|
||||||
|
{
|
||||||
|
// test if it even compiles
|
||||||
|
boost::optional<NotDefaultConstructible> opt, opt2;
|
||||||
|
opt = opt2;
|
||||||
|
(void)opt;
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
boost::optional< std::pair<const_buffers_type, int> > opt, opt2;
|
test_beast_example();
|
||||||
opt = opt2;
|
test_assign_for_non_default_constructible();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
26
test/optional_test_fail_const_swap.cpp
Normal file
26
test/optional_test_fail_const_swap.cpp
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// Copyright (C) 2018, Andrzej Krzemienski.
|
||||||
|
//
|
||||||
|
// Use, modification, and distribution is subject to the Boost Software
|
||||||
|
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||||
|
// http://www.boost.org/LICENSE_1_0.txt)
|
||||||
|
//
|
||||||
|
// See http://www.boost.org/lib/optional for documentation.
|
||||||
|
//
|
||||||
|
// You are welcome to contact the author at:
|
||||||
|
// akrzemi1@gmail.com
|
||||||
|
|
||||||
|
#include "boost/optional.hpp"
|
||||||
|
|
||||||
|
// THIS TEST SHOULD FAIL TO COMPILE
|
||||||
|
|
||||||
|
void test_converitng_assignment_of_different_enums()
|
||||||
|
{
|
||||||
|
const boost::optional<int> o1(1);
|
||||||
|
const boost::optional<int> o2(2);
|
||||||
|
swap(o1, o2); // no swap on const objects should compile
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
test_converitng_assignment_of_different_enums();
|
||||||
|
}
|
Reference in New Issue
Block a user