Add support for BOOST_NO_IOSTREAM

This commit is contained in:
Andrzej Krzemienski
2021-05-19 23:29:10 +02:00
parent a70c51eed1
commit d0ab8004c0
7 changed files with 54 additions and 23 deletions

View File

@ -11,6 +11,10 @@
[section:relnotes Release Notes] [section:relnotes Release Notes]
[heading Boost Release 1.77]
* Fixed [@https://github.com/boostorg/optional/issues/92 issue #92].
[heading Boost Release 1.76] [heading Boost Release 1.76]
* Fixed MSVC warning C4702. * Fixed MSVC warning C4702.

View File

@ -28,6 +28,15 @@
</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_77"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_77">Boost
Release 1.77</a>
</h4>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">
Fixed <a href="https://github.com/boostorg/optional/issues/92" target="_top">issue
#92</a>.
</li></ul></div>
<h4>
<a name="boost_optional.relnotes.h1"></a>
<span class="phrase"><a name="boost_optional.relnotes.boost_release_1_76"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_76">Boost <span class="phrase"><a name="boost_optional.relnotes.boost_release_1_76"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_76">Boost
Release 1.76</a> Release 1.76</a>
</h4> </h4>
@ -35,7 +44,7 @@
Fixed MSVC warning C4702. Fixed MSVC warning C4702.
</li></ul></div> </li></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_75"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_75">Boost <span class="phrase"><a name="boost_optional.relnotes.boost_release_1_75"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_75">Boost
Release 1.75</a> Release 1.75</a>
</h4> </h4>
@ -49,7 +58,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_73"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_73">Boost <span class="phrase"><a name="boost_optional.relnotes.boost_release_1_73"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_73">Boost
Release 1.73</a> Release 1.73</a>
</h4> </h4>
@ -72,7 +81,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_69"></a></span><a class="link" href="relnotes.html#boost_optional.relnotes.boost_release_1_69">Boost <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> Release 1.69</a>
</h4> </h4>
@ -90,7 +99,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_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>
@ -107,7 +116,7 @@
</li> </li>
</ul></div> </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_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>
@ -121,7 +130,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_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>
@ -139,7 +148,7 @@
</li> </li>
</ul></div> </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_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>
@ -163,7 +172,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_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>
@ -171,7 +180,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.h9"></a> <a name="boost_optional.relnotes.h10"></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>
@ -214,7 +223,7 @@
</li> </li>
</ul></div> </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_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>
@ -225,7 +234,7 @@
#11203</a>. #11203</a>.
</li></ul></div> </li></ul></div>
<h4> <h4>
<a name="boost_optional.relnotes.h11"></a> <a name="boost_optional.relnotes.h12"></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>
@ -239,7 +248,7 @@
</li> </li>
</ul></div> </ul></div>
<h4> <h4>
<a name="boost_optional.relnotes.h12"></a> <a name="boost_optional.relnotes.h13"></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>
@ -275,7 +284,7 @@
</li> </li>
</ul></div> </ul></div>
<h4> <h4>
<a name="boost_optional.relnotes.h13"></a> <a name="boost_optional.relnotes.h14"></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>
@ -285,7 +294,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.h14"></a> <a name="boost_optional.relnotes.h15"></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: December 18, 2020 at 22:54:39 GMT</small></p></td> <td align="left"><p><small>Last revised: May 19, 2021 at 21:27:41 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

@ -18,7 +18,9 @@
#define BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP #define BOOST_OPTIONAL_OPTIONAL_FLC_19NOV2002_HPP
#include <new> #include <new>
#ifndef BOOST_NO_IOSTREAM
#include <iosfwd> #include <iosfwd>
#endif // BOOST_NO_IOSTREAM
#ifdef BOOST_OPTIONAL_DETAIL_USE_STD_TYPE_TRAITS #ifdef BOOST_OPTIONAL_DETAIL_USE_STD_TYPE_TRAITS
# include <type_traits> # include <type_traits>
@ -1586,6 +1588,7 @@ get_pointer ( optional<T>& opt )
} // namespace boost } // namespace boost
#ifndef BOOST_NO_IOSTREAM
namespace boost { namespace boost {
// The following declaration prevents a bug where operator safe-bool is used upon streaming optional object if you forget the IO header. // The following declaration prevents a bug where operator safe-bool is used upon streaming optional object if you forget the IO header.
@ -1598,6 +1601,7 @@ operator<<(std::basic_ostream<CharType, CharTrait>& os, optional_detail::optiona
} }
} // namespace boost } // namespace boost
#endif // BOOST_NO_IOSTREAM
#include <boost/optional/detail/optional_relops.hpp> #include <boost/optional/detail/optional_relops.hpp>
#include <boost/optional/detail/optional_swap.hpp> #include <boost/optional/detail/optional_swap.hpp>

View File

@ -12,6 +12,7 @@
#ifndef BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP #ifndef BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
#define BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP #define BOOST_OPTIONAL_OPTIONAL_IO_FLC_19NOV2002_HPP
#ifndef BOOST_NO_IOSTREAM
#include <istream> #include <istream>
#include <ostream> #include <ostream>
@ -31,7 +32,7 @@ operator<<(std::basic_ostream<CharType, CharTrait>& out, none_t)
{ {
out << "--"; out << "--";
} }
return out; return out;
} }
@ -90,5 +91,5 @@ operator>>(std::basic_istream<CharType, CharTrait>& in, optional<T>& v)
} // namespace boost } // namespace boost
#endif // BOOST_NO_IOSTREAM
#endif #endif

View File

@ -12,7 +12,9 @@
// Revisions: // Revisions:
// 12 May 2008 (added more swap tests) // 12 May 2008 (added more swap tests)
// //
#ifndef BOOST_NO_IOSTREAM
#include<iostream> #include<iostream>
#endif // BOOST_NO_IOSTREAM
#include<stdexcept> #include<stdexcept>
#include<string> #include<string>
@ -908,7 +910,7 @@ void test_no_implicit_conversions()
// Test for support for classes with overridden operator& // Test for support for classes with overridden operator&
class CustomAddressOfClass class CustomAddressOfClass
{ {
int n; int n;
@ -950,5 +952,3 @@ int main()
return boost::report_errors(); return boost::report_errors();
} }

View File

@ -10,15 +10,19 @@
// You are welcome to contact the author at: // You are welcome to contact the author at:
// fernando_cacciola@hotmail.com // fernando_cacciola@hotmail.com
#include <sstream>
#include "boost/optional/optional.hpp" #include "boost/optional/optional.hpp"
#include "boost/optional/optional_io.hpp" #include "boost/optional/optional_io.hpp"
#include "boost/core/lightweight_test.hpp"
#ifndef BOOST_NO_IOSTREAM
#include <sstream>
#ifdef BOOST_BORLANDC #ifdef BOOST_BORLANDC
#pragma hdrstop #pragma hdrstop
#endif #endif
#include "boost/core/lightweight_test.hpp"
using boost::optional; using boost::optional;
@ -29,7 +33,7 @@ void test2( Opt o, Opt buff )
const int markv = 123 ; const int markv = 123 ;
int mark = 0 ; int mark = 0 ;
s << o << " " << markv ; s << o << " " << markv ;
s >> buff >> mark ; s >> buff >> mark ;
@ -85,3 +89,12 @@ int main()
return boost::report_errors(); return boost::report_errors();
} }
#else // BOOST_NO_IOSTREAM
int main()
{
return boost::report_errors();
}
#endif // BOOST_NO_IOSTREAM