Merge branch 'develop'

This commit is contained in:
Andrzej Krzemienski
2018-10-29 22:24:28 +01:00
16 changed files with 144 additions and 56 deletions

View File

@ -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__]``

View File

@ -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__

View File

@ -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]).

View File

@ -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">&lt;</span><span class="identifier">T</span><span class="special">&amp;&gt;::</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">&lt;</span><span class="identifier">T</span><span class="special">&amp;&gt;::</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>

View File

@ -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>

View File

@ -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">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">reset</span> <span class="special">(</span> <span class="identifier">R</span> <span class="special">&amp;&amp;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">R</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">reset</span> <span class="special">(</span> <span class="identifier">R</span> <span class="special">&amp;&amp;</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>

View File

@ -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">&amp;</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">&amp;</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>

View File

@ -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>

View File

@ -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>

View File

@ -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 ;
} }

View File

@ -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(); }

View File

@ -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(); }

View File

@ -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 ]

View 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();
}

View File

@ -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

View 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();
}