3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>Detailed Semantics - Free Functions
</title>
5 <link rel=
"stylesheet" href=
"../../../../../../../doc/src/boostbook.css" type=
"text/css">
6 <meta name=
"generator" content=
"DocBook XSL Stylesheets V1.78.1">
7 <link rel=
"home" href=
"../../../index.html" title=
"Boost.Optional">
8 <link rel=
"up" href=
"../../../optional/reference/header__boost_optional_optional_hpp_.html" title=
"Header <boost/optional/optional.hpp>">
9 <link rel=
"prev" href=
"detailed_semantics___optional_references.html" title=
"Detailed Semantics - Optional References">
10 <link rel=
"next" href=
"../header__boost_optional_hpp_.html" title=
"Header <boost/optional.hpp>">
12 <body bgcolor=
"white" text=
"black" link=
"#0000FF" vlink=
"#840084" alink=
"#0000FF">
13 <table cellpadding=
"2" width=
"100%"><tr>
14 <td valign=
"top"><img alt=
"Boost C++ Libraries" width=
"277" height=
"86" src=
"../../../../../../../boost.png"></td>
15 <td align=
"center"><a href=
"../../../../../../../index.html">Home
</a></td>
16 <td align=
"center"><a href=
"../../../../../../../libs/libraries.htm">Libraries
</a></td>
17 <td align=
"center"><a href=
"http://www.boost.org/users/people.html">People
</a></td>
18 <td align=
"center"><a href=
"http://www.boost.org/users/faq.html">FAQ
</a></td>
19 <td align=
"center"><a href=
"../../../../../../../more/index.htm">More
</a></td>
22 <div class=
"spirit-nav">
23 <a accesskey=
"p" href=
"detailed_semantics___optional_references.html"><img src=
"../../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../../../optional/reference/header__boost_optional_optional_hpp_.html"><img src=
"../../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../../index.html"><img src=
"../../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"../header__boost_optional_hpp_.html"><img src=
"../../../../../../../doc/src/images/next.png" alt=
"Next"></a>
26 <div class=
"titlepage"><div><div><h4 class=
"title">
27 <a name=
"boost_optional.reference.header__boost_optional_optional_hpp_.detailed_semantics___free_functions"></a><a class=
"link" href=
"detailed_semantics___free_functions.html" title=
"Detailed Semantics - Free Functions">Detailed
28 Semantics - Free Functions
</a>
29 </h4></div></div></div>
31 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
33 <a name=
"reference_make_optional_value"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
34 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">make_optional
</span><span class=
"special">(
</span>
35 <span class=
"identifier">T
</span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">v
</span> <span class=
"special">)
</span></code>
36 </p></blockquote></div>
37 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
39 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>(
</span><span class=
"identifier">v
</span><span class=
"special">)
</span></code> for the
<span class=
"emphasis"><em>deduced
</em></span>
40 type
<code class=
"computeroutput"><span class=
"identifier">T
</span></code> of
<code class=
"computeroutput"><span class=
"identifier">v
</span></code>.
43 <span class=
"bold"><strong>Example:
</strong></span>
44 <pre class=
"programlisting"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">void
</span> <span class=
"identifier">foo
</span> <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">opt
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
46 <span class=
"identifier">foo
</span> <span class=
"special">(
</span> <span class=
"identifier">make_optional
</span><span class=
"special">(
</span><span class=
"number">1</span><span class=
"special">+
</span><span class=
"number">1</span><span class=
"special">)
</span> <span class=
"special">)
</span> <span class=
"special">;
</span> <span class=
"comment">// Creates an optional
<int
></span>
51 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
53 <a name=
"reference_make_optional_bool_value"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
54 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">make_optional
</span><span class=
"special">(
</span>
55 <span class=
"keyword">bool
</span> <span class=
"identifier">condition
</span><span class=
"special">,
</span> <span class=
"identifier">T
</span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">v
</span> <span class=
"special">)
</span></code>
56 </p></blockquote></div>
57 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
59 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>(
</span><span class=
"identifier">condition
</span><span class=
"special">,
</span> <span class=
"identifier">v
</span><span class=
"special">)
</span></code> for the
<span class=
"emphasis"><em>deduced
</em></span>
60 type
<code class=
"computeroutput"><span class=
"identifier">T
</span></code> of
<code class=
"computeroutput"><span class=
"identifier">v
</span></code>.
63 <span class=
"bold"><strong>Example:
</strong></span>
64 <pre class=
"programlisting"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">double
</span><span class=
"special">></span> <span class=
"identifier">calculate_foo
</span><span class=
"special">()
</span>
65 <span class=
"special">{
</span>
66 <span class=
"keyword">double
</span> <span class=
"identifier">val
</span> <span class=
"special">=
</span> <span class=
"identifier">compute_foo
</span><span class=
"special">();
</span>
67 <span class=
"keyword">return
</span> <span class=
"identifier">make_optional
</span><span class=
"special">(
</span><span class=
"identifier">is_not_nan_and_finite
</span><span class=
"special">(
</span><span class=
"identifier">val
</span><span class=
"special">),
</span><span class=
"identifier">val
</span><span class=
"special">);
</span>
68 <span class=
"special">}
</span>
70 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">double
</span><span class=
"special">></span> <span class=
"identifier">v
</span> <span class=
"special">=
</span> <span class=
"identifier">calculate_foo
</span><span class=
"special">();
</span>
71 <span class=
"keyword">if
</span> <span class=
"special">(
</span> <span class=
"special">!
</span><span class=
"identifier">v
</span> <span class=
"special">)
</span>
72 <span class=
"identifier">error
</span><span class=
"special">(
</span><span class=
"string">"foo wasn't computed"</span><span class=
"special">);
</span>
77 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
79 <a name=
"reference_operator_compare_equal_optional_optional"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
80 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
81 <span class=
"special">==
</span> <span class=
"special">(
</span>
82 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
83 </p></blockquote></div>
84 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
86 <span class=
"bold"><strong>Requires:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">T
</span></code>
87 shall meet requirements of
<a href=
"http://www.sgi.com/tech/stl/EqualityComparable.html" target=
"_top"><code class=
"computeroutput"><span class=
"identifier">EqualityComparable
</span></code></a>.
90 <span class=
"bold"><strong>Returns:
</strong></span> If both
<code class=
"computeroutput"><span class=
"identifier">x
</span></code>
91 and
<code class=
"computeroutput"><span class=
"identifier">y
</span></code> are initialized,
92 <code class=
"computeroutput"><span class=
"special">(*
</span><span class=
"identifier">x
</span>
93 <span class=
"special">==
</span> <span class=
"special">*
</span><span class=
"identifier">y
</span><span class=
"special">)
</span></code>.
94 If only
<code class=
"computeroutput"><span class=
"identifier">x
</span></code> or
<code class=
"computeroutput"><span class=
"identifier">y
</span></code> is initialized,
<code class=
"computeroutput"><span class=
"keyword">false
</span></code>.
95 If both are uninitialized,
<code class=
"computeroutput"><span class=
"keyword">true
</span></code>.
98 <span class=
"bold"><strong>Notes:
</strong></span> This definition guarantees
99 that
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code>
100 not containing a value is compared unequal to any
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code> containing any value, and equal
101 to any other
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code> not containing a value. Pointers
102 have shallow relational operators while
<code class=
"computeroutput"><span class=
"identifier">optional
</span></code>
103 has deep relational operators. Do not use
<code class=
"computeroutput"><span class=
"keyword">operator
</span><span class=
"special">==
</span></code> directly in generic code which expect
104 to be given either an
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code> or a pointer; use
<a href=
"../../../../../../utility/OptionalPointee.html#equal" target=
"_top"><code class=
"computeroutput"><span class=
"identifier">equal_pointees
</span><span class=
"special">()
</span></code></a>
107 <li class=
"listitem">
108 <span class=
"bold"><strong>Example:
</strong></span>
109 <pre class=
"programlisting"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">oN
</span><span class=
"special">,
</span> <span class=
"identifier">oN_
</span><span class=
"special">;
</span>
110 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">o1
</span><span class=
"special">(
</span><span class=
"identifier">T
</span><span class=
"special">(
</span><span class=
"number">1</span><span class=
"special">)),
</span> <span class=
"identifier">o1_
</span><span class=
"special">(
</span><span class=
"identifier">T
</span><span class=
"special">(
</span><span class=
"number">1</span><span class=
"special">));
</span>
111 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">o2
</span><span class=
"special">(
</span><span class=
"identifier">T
</span><span class=
"special">(
</span><span class=
"number">2</span><span class=
"special">));
</span>
113 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">oN
</span> <span class=
"special">==
</span> <span class=
"identifier">oN
</span> <span class=
"special">);
</span> <span class=
"comment">// Identity implies equality
</span>
114 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">o1
</span> <span class=
"special">==
</span> <span class=
"identifier">o1
</span> <span class=
"special">);
</span> <span class=
"comment">//
</span>
116 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">oN
</span> <span class=
"special">==
</span> <span class=
"identifier">oN_
</span> <span class=
"special">);
</span> <span class=
"comment">// Both uninitialized compare equal
</span>
118 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">oN
</span> <span class=
"special">!=
</span> <span class=
"identifier">o1
</span> <span class=
"special">);
</span> <span class=
"comment">// Initialized unequal to initialized.
</span>
120 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">o1
</span> <span class=
"special">==
</span> <span class=
"identifier">o1_
</span> <span class=
"special">);
</span> <span class=
"comment">// Both initialized compare as (*lhs == *rhs)
</span>
121 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">o1
</span> <span class=
"special">!=
</span> <span class=
"identifier">o2
</span> <span class=
"special">);
</span> <span class=
"comment">//
</span>
126 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
128 <a name=
"reference_operator_compare_less_optional_optional"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
129 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
130 <span class=
"special"><</span> <span class=
"special">(
</span>
131 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
132 </p></blockquote></div>
133 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
134 <li class=
"listitem">
135 <span class=
"bold"><strong>Requires:
</strong></span> Expression
<code class=
"computeroutput"><span class=
"special">*
</span><span class=
"identifier">x
</span> <span class=
"special"><</span> <span class=
"special">*
</span><span class=
"identifier">y
</span></code> shall be well-formed and its result
136 shall be convertible to
<code class=
"computeroutput"><span class=
"keyword">bool
</span></code>.
138 <li class=
"listitem">
139 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">(!
</span><span class=
"identifier">y
</span><span class=
"special">)
</span> <span class=
"special">?
</span> <span class=
"keyword">false
</span> <span class=
"special">:
</span> <span class=
"special">(!
</span><span class=
"identifier">x
</span><span class=
"special">)
</span> <span class=
"special">?
</span> <span class=
"keyword">true
</span> <span class=
"special">:
</span> <span class=
"special">*
</span><span class=
"identifier">x
</span> <span class=
"special"><</span>
140 <span class=
"special">*
</span><span class=
"identifier">y
</span></code>.
142 <li class=
"listitem">
143 <span class=
"bold"><strong>Notes:
</strong></span> This definition guarantees
144 that
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code>
145 not containing a value is ordered as less than any
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code> containing any value, and equivalent
146 to any other
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code> not containing a value. Pointers
147 have shallow relational operators while
<code class=
"computeroutput"><span class=
"identifier">optional
</span></code>
148 has deep relational operators. Do not use
<code class=
"computeroutput"><span class=
"keyword">operator
</span><span class=
"special"><</span></code> directly in generic code which
149 expect to be given either an
<code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code> or a pointer; use
<a href=
"../../../../../../utility/OptionalPointee.html#less" target=
"_top"><code class=
"computeroutput"><span class=
"identifier">less_pointees
</span><span class=
"special">()
</span></code></a>
150 instead.
<code class=
"computeroutput"><span class=
"identifier">T
</span></code> need not
151 be
<a href=
"http://www.sgi.com/tech/stl/LessThanComparable.html" target=
"_top"><code class=
"computeroutput"><span class=
"identifier">LessThanComparable
</span></code></a>. Only
152 single
<code class=
"computeroutput"><span class=
"keyword">operator
</span><span class=
"special"><</span></code>
153 is required. Other relational operations are defined in terms of this
154 one. If
<code class=
"computeroutput"><span class=
"identifier">T
</span></code>'s
<code class=
"computeroutput"><span class=
"keyword">operator
</span><span class=
"special"><</span></code>
155 satisfies the axioms of
<a href=
"http://www.sgi.com/tech/stl/LessThanComparable.html" target=
"_top"><code class=
"computeroutput"><span class=
"identifier">LessThanComparable
</span></code></a> (transitivity,
156 antisymmetry and irreflexivity),
<code class=
"computeroutput"><span class=
"identifier">optinal
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span></code> is
<a href=
"http://www.sgi.com/tech/stl/LessThanComparable.html" target=
"_top"><code class=
"computeroutput"><span class=
"identifier">LessThanComparable
</span></code></a>.
158 <li class=
"listitem">
159 <span class=
"bold"><strong>Example:
</strong></span>
160 <pre class=
"programlisting"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">oN
</span><span class=
"special">,
</span> <span class=
"identifier">oN_
</span><span class=
"special">;
</span>
161 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">o0
</span><span class=
"special">(
</span><span class=
"identifier">T
</span><span class=
"special">(
</span><span class=
"number">0</span><span class=
"special">));
</span>
162 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">o1
</span><span class=
"special">(
</span><span class=
"identifier">T
</span><span class=
"special">(
</span><span class=
"number">1</span><span class=
"special">));
</span>
164 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!(
</span><span class=
"identifier">oN
</span> <span class=
"special"><</span> <span class=
"identifier">oN
</span><span class=
"special">)
</span> <span class=
"special">);
</span> <span class=
"comment">// Identity implies equivalence
</span>
165 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!(
</span><span class=
"identifier">o1
</span> <span class=
"special"><</span> <span class=
"identifier">o1
</span><span class=
"special">)
</span> <span class=
"special">);
</span>
167 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!(
</span><span class=
"identifier">oN
</span> <span class=
"special"><</span> <span class=
"identifier">oN_
</span><span class=
"special">)
</span> <span class=
"special">);
</span> <span class=
"comment">// Two uninitialized are equivalent
</span>
168 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!(
</span><span class=
"identifier">oN_
</span> <span class=
"special"><</span> <span class=
"identifier">oN
</span><span class=
"special">)
</span> <span class=
"special">);
</span>
170 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">oN
</span> <span class=
"special"><</span> <span class=
"identifier">o0
</span> <span class=
"special">);
</span> <span class=
"comment">// Uninitialized is less than initialized
</span>
171 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!(
</span><span class=
"identifier">o0
</span> <span class=
"special"><</span> <span class=
"identifier">oN
</span><span class=
"special">)
</span> <span class=
"special">);
</span>
173 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">o1
</span> <span class=
"special"><</span> <span class=
"identifier">o2
</span> <span class=
"special">)
</span> <span class=
"special">;
</span> <span class=
"comment">// Two initialized compare as (*lhs
< *rhs)
</span>
174 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!(
</span><span class=
"identifier">o2
</span> <span class=
"special"><</span> <span class=
"identifier">o1
</span><span class=
"special">)
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
175 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!(
</span><span class=
"identifier">o2
</span> <span class=
"special"><</span> <span class=
"identifier">o2
</span><span class=
"special">)
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
180 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
182 <a name=
"reference_operator_compare_not_equal_optional_optional"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
183 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
184 <span class=
"special">!=
</span> <span class=
"special">(
</span>
185 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
186 </p></blockquote></div>
187 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
188 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">!(
</span>
189 <span class=
"identifier">x
</span> <span class=
"special">==
</span>
190 <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
193 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
195 <a name=
"reference_operator_compare_greater_optional_optional"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
196 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
197 <span class=
"special">></span> <span class=
"special">(
</span>
198 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
199 </p></blockquote></div>
200 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
201 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">(
</span>
202 <span class=
"identifier">y
</span> <span class=
"special"><</span>
203 <span class=
"identifier">x
</span> <span class=
"special">);
</span></code>
206 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
208 <a name=
"reference_operator_compare_less_or_equal_optional_optional"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
209 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
210 <span class=
"special"><=
</span> <span class=
"special">(
</span>
211 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
212 </p></blockquote></div>
213 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
214 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">!(
</span>
215 <span class=
"identifier">y
</span> <span class=
"special"><</span>
216 <span class=
"identifier">x
</span> <span class=
"special">);
</span></code>
219 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
221 <a name=
"reference_operator_compare_greater_or_equal_optional_optional"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
222 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
223 <span class=
"special">>=
</span> <span class=
"special">(
</span>
224 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
225 </p></blockquote></div>
226 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
227 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">!(
</span>
228 <span class=
"identifier">x
</span> <span class=
"special"><</span>
229 <span class=
"identifier">y
</span> <span class=
"special">);
</span></code>
232 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
234 <a name=
"reference_operator_compare_equal_optional_none"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
235 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
236 <span class=
"special">==
</span> <span class=
"special">(
</span>
237 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">none_t
</span> <span class=
"special">)
</span>
238 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
239 </p></blockquote></div>
240 <div class=
"blockquote"><blockquote class=
"blockquote"><p>
241 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
242 <span class=
"special">==
</span> <span class=
"special">(
</span>
243 <span class=
"identifier">none_t
</span><span class=
"special">,
</span>
244 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span> <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
245 </p></blockquote></div>
246 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
247 <li class=
"listitem">
248 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">!
</span><span class=
"identifier">x
</span></code>.
250 <li class=
"listitem">
251 <span class=
"bold"><strong>Notes:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">T
</span></code>
252 need not meet requirements of
<a href=
"http://www.sgi.com/tech/stl/EqualityComparable.html" target=
"_top"><code class=
"computeroutput"><span class=
"identifier">EqualityComparable
</span></code></a>.
256 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
258 <a name=
"reference_operator_compare_not_equal_optional_none"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
259 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
260 <span class=
"special">!=
</span> <span class=
"special">(
</span>
261 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">none_t
</span> <span class=
"special">)
</span>
262 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
263 </p></blockquote></div>
264 <div class=
"blockquote"><blockquote class=
"blockquote"><p>
265 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"keyword">operator
</span>
266 <span class=
"special">!=
</span> <span class=
"special">(
</span>
267 <span class=
"identifier">none_t
</span><span class=
"special">,
</span>
268 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">x
</span> <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
269 </p></blockquote></div>
270 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
271 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(
</span><span class=
"identifier">x
</span><span class=
"special">);
</span></code>
274 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
276 <a name=
"reference_free_get_pointer"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
277 <code class=
"computeroutput"><span class=
"keyword">auto
</span> <span class=
"identifier">get_pointer
</span>
278 <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>&</span> <span class=
"identifier">o
</span>
279 <span class=
"special">)
</span> <span class=
"special">-
></span>
280 <span class=
"keyword">typename
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>::
</span><span class=
"identifier">pointer_type
</span>
281 <span class=
"special">;
</span></code>
282 </p></blockquote></div>
283 <div class=
"blockquote"><blockquote class=
"blockquote"><p>
284 <code class=
"computeroutput"><span class=
"keyword">auto
</span> <span class=
"identifier">get_pointer
</span>
285 <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">o
</span> <span class=
"special">)
</span> <span class=
"special">-
></span> <span class=
"keyword">typename
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>::
</span><span class=
"identifier">pointer_const_type
</span>
286 <span class=
"special">;
</span></code>
287 </p></blockquote></div>
288 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
289 <li class=
"listitem">
290 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">o
</span><span class=
"special">.
</span><span class=
"identifier">get_ptr
</span><span class=
"special">()
</span></code>.
292 <li class=
"listitem">
293 <span class=
"bold"><strong>Throws:
</strong></span> Nothing.
297 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
299 <a name=
"reference_free_get_value_or"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
300 <code class=
"computeroutput"><span class=
"keyword">auto
</span> <span class=
"identifier">get_optional_value_or
</span>
301 <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>&</span> <span class=
"identifier">o
</span><span class=
"special">,
</span> <span class=
"keyword">typename
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>::
</span><span class=
"identifier">reference_type
</span> <span class=
"identifier">def
</span>
302 <span class=
"special">)
</span> <span class=
"special">-
></span>
303 <span class=
"keyword">typename
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>::
</span><span class=
"identifier">reference_type
</span>
304 <span class=
"special">;
</span></code>
305 </p></blockquote></div>
306 <div class=
"blockquote"><blockquote class=
"blockquote"><p>
307 <code class=
"computeroutput"><span class=
"keyword">auto
</span> <span class=
"identifier">get_optional_value_or
</span>
308 <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">o
</span><span class=
"special">,
</span> <span class=
"keyword">typename
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>::
</span><span class=
"identifier">reference_const_type
</span> <span class=
"identifier">def
</span>
309 <span class=
"special">)
</span> <span class=
"special">-
></span>
310 <span class=
"keyword">typename
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>::
</span><span class=
"identifier">reference_const_type
</span>
311 <span class=
"special">;
</span></code>
312 </p></blockquote></div>
313 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
314 <li class=
"listitem">
315 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">o
</span><span class=
"special">.
</span><span class=
"identifier">get_value_or
</span><span class=
"special">(
</span><span class=
"identifier">def
</span><span class=
"special">)
</span></code>.
317 <li class=
"listitem">
318 <span class=
"bold"><strong>Throws:
</strong></span> Nothing.
320 <li class=
"listitem">
321 <span class=
"bold"><strong>Remarks:
</strong></span> This function is deprecated.
325 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
327 <a name=
"reference_swap_optional_optional"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
328 <code class=
"computeroutput"><span class=
"keyword">void
</span> <span class=
"identifier">swap
</span>
329 <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">>&</span> <span class=
"identifier">y
</span>
330 <span class=
"special">)
</span> <span class=
"special">;
</span></code>
331 </p></blockquote></div>
332 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
333 <li class=
"listitem">
334 <span class=
"bold"><strong>Requires:
</strong></span> Lvalues of type
<code class=
"computeroutput"><span class=
"identifier">T
</span></code> shall be swappable and
<code class=
"computeroutput"><span class=
"identifier">T
</span></code> shall be
<code class=
"computeroutput"><span class=
"identifier">MoveConstructible
</span></code>.
336 <li class=
"listitem">
338 <span class=
"bold"><strong>Effects:
</strong></span>
340 <div class=
"informaltable"><table class=
"table">
346 <thead><tr></tr></thead>
353 <span class=
"bold"><strong><code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code> contains a value
</strong></span>
358 <span class=
"bold"><strong><code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code> does not contain a value
</strong></span>
365 <span class=
"bold"><strong><code class=
"computeroutput"><span class=
"identifier">rhs
</span></code>
366 contains a value
</strong></span>
371 calls
<code class=
"computeroutput"><span class=
"identifier">swap
</span><span class=
"special">(*(*
</span><span class=
"keyword">this
</span><span class=
"special">),
</span> <span class=
"special">*
</span><span class=
"identifier">rhs
</span><span class=
"special">)
</span></code>
376 initializes the contained value of
<code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code> as if direct-initializing
377 an object of type
<code class=
"computeroutput"><span class=
"identifier">T
</span></code>
378 with the expression
<code class=
"computeroutput"><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">move
</span><span class=
"special">(*
</span><span class=
"identifier">rhs
</span><span class=
"special">)
</span></code>, followed by
<code class=
"computeroutput"><span class=
"identifier">rhs
</span><span class=
"special">.
</span><span class=
"identifier">val
</span><span class=
"special">-
></span><span class=
"identifier">T
</span><span class=
"special">::~
</span><span class=
"identifier">T
</span><span class=
"special">()
</span></code>,
379 <code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code>
380 contains a value and
<code class=
"computeroutput"><span class=
"identifier">rhs
</span></code>
381 does not contain a value
388 <span class=
"bold"><strong><code class=
"computeroutput"><span class=
"identifier">rhs
</span></code>
389 does not contain a value
</strong></span>
394 initializes the contained value of
<code class=
"computeroutput"><span class=
"identifier">rhs
</span></code>
395 as if direct-initializing an object of type
<code class=
"computeroutput"><span class=
"identifier">T
</span></code> with the expression
396 <code class=
"computeroutput"><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">move
</span><span class=
"special">(*(*
</span><span class=
"keyword">this
</span><span class=
"special">))
</span></code>,
397 followed by
<code class=
"computeroutput"><span class=
"identifier">val
</span><span class=
"special">-
></span><span class=
"identifier">T
</span><span class=
"special">::~
</span><span class=
"identifier">T
</span><span class=
"special">()
</span></code>,
<code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code> does not contain a value
398 and
<code class=
"computeroutput"><span class=
"identifier">rhs
</span></code> contains
411 <li class=
"listitem">
412 <span class=
"bold"><strong>Postconditions:
</strong></span> The states of
<code class=
"computeroutput"><span class=
"identifier">x
</span></code> and
<code class=
"computeroutput"><span class=
"identifier">y
</span></code>
415 <li class=
"listitem">
416 <span class=
"bold"><strong>Throws:
</strong></span> If both are initialized, whatever
417 <code class=
"computeroutput"><span class=
"identifier">swap
</span><span class=
"special">(
</span><span class=
"identifier">T
</span><span class=
"special">&,
</span><span class=
"identifier">T
</span><span class=
"special">&)
</span></code>
418 throws. If only one is initialized, whatever
<code class=
"computeroutput"><span class=
"identifier">T
</span><span class=
"special">::
</span><span class=
"identifier">T
</span> <span class=
"special">(
</span> <span class=
"identifier">T
</span><span class=
"special">&&</span> <span class=
"special">)
</span></code>
421 <li class=
"listitem">
422 <span class=
"bold"><strong>Example:
</strong></span>
423 <pre class=
"programlisting"><span class=
"identifier">T
</span> <span class=
"identifier">x
</span><span class=
"special">(
</span><span class=
"number">12</span><span class=
"special">);
</span>
424 <span class=
"identifier">T
</span> <span class=
"identifier">y
</span><span class=
"special">(
</span><span class=
"number">21</span><span class=
"special">);
</span>
425 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">def0
</span> <span class=
"special">;
</span>
426 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">def1
</span> <span class=
"special">;
</span>
427 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">optX
</span><span class=
"special">(
</span><span class=
"identifier">x
</span><span class=
"special">);
</span>
428 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">optY
</span><span class=
"special">(
</span><span class=
"identifier">y
</span><span class=
"special">);
</span>
430 <span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">swap
</span><span class=
"special">(
</span><span class=
"identifier">def0
</span><span class=
"special">,
</span><span class=
"identifier">def1
</span><span class=
"special">);
</span> <span class=
"comment">// no-op
</span>
432 <span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">swap
</span><span class=
"special">(
</span><span class=
"identifier">def0
</span><span class=
"special">,
</span><span class=
"identifier">optX
</span><span class=
"special">);
</span>
433 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">def0
</span> <span class=
"special">==
</span> <span class=
"identifier">x
</span> <span class=
"special">);
</span>
434 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!
</span><span class=
"identifier">optX
</span> <span class=
"special">);
</span>
436 <span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">swap
</span><span class=
"special">(
</span><span class=
"identifier">def0
</span><span class=
"special">,
</span><span class=
"identifier">optX
</span><span class=
"special">);
</span> <span class=
"comment">// Get back to original values
</span>
438 <span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">swap
</span><span class=
"special">(
</span><span class=
"identifier">optX
</span><span class=
"special">,
</span><span class=
"identifier">optY
</span><span class=
"special">);
</span>
439 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">optX
</span> <span class=
"special">==
</span> <span class=
"identifier">y
</span> <span class=
"special">);
</span>
440 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">optY
</span> <span class=
"special">==
</span> <span class=
"identifier">x
</span> <span class=
"special">);
</span>
445 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
447 <a name=
"reference_swap_optional_reference"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
448 <code class=
"computeroutput"><span class=
"keyword">void
</span> <span class=
"identifier">swap
</span>
449 <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>&</span> <span class=
"identifier">x
</span><span class=
"special">,
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>&</span> <span class=
"identifier">y
</span>
450 <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span>
451 <span class=
"special">;
</span></code>
452 </p></blockquote></div>
453 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
454 <li class=
"listitem">
455 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">x
</span></code>
456 refers to what
<code class=
"computeroutput"><span class=
"identifier">y
</span></code> refererred
457 to before the swap (if anything).
<code class=
"computeroutput"><span class=
"identifier">y
</span></code>
458 refers to whatever
<code class=
"computeroutput"><span class=
"identifier">x
</span></code>
459 referred to before the swap.
461 <li class=
"listitem">
462 <span class=
"bold"><strong>Example:
</strong></span>
463 <pre class=
"programlisting"><span class=
"identifier">T
</span> <span class=
"identifier">x
</span><span class=
"special">(
</span><span class=
"number">12</span><span class=
"special">);
</span>
464 <span class=
"identifier">T
</span> <span class=
"identifier">y
</span><span class=
"special">(
</span><span class=
"number">21</span><span class=
"special">);
</span>
466 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&></span> <span class=
"identifier">opt0
</span><span class=
"special">;
</span>
467 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&></span> <span class=
"identifier">optX
</span> <span class=
"special">(
</span><span class=
"identifier">x
</span><span class=
"special">);
</span>
468 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&></span> <span class=
"identifier">optY
</span> <span class=
"special">(
</span><span class=
"identifier">y
</span><span class=
"special">);
</span>
470 <span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">swap
</span><span class=
"special">(
</span><span class=
"identifier">optX
</span><span class=
"special">,
</span> <span class=
"identifier">optY
</span><span class=
"special">);
</span>
471 <span class=
"identifier">assert
</span> <span class=
"special">(
</span><span class=
"identifier">addressof
</span><span class=
"special">(*
</span><span class=
"identifier">optX
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"identifier">addressof
</span><span class=
"special">(
</span><span class=
"identifier">y
</span><span class=
"special">));
</span>
472 <span class=
"identifier">assert
</span> <span class=
"special">(
</span><span class=
"identifier">addressof
</span><span class=
"special">(*
</span><span class=
"identifier">optY
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"identifier">addressof
</span><span class=
"special">(
</span><span class=
"identifier">x
</span><span class=
"special">));
</span>
474 <span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">swap
</span><span class=
"special">(
</span><span class=
"identifier">opt0
</span><span class=
"special">,
</span> <span class=
"identifier">optX
</span><span class=
"special">);
</span>
475 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">opt0
</span> <span class=
"special">);
</span>
476 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">!
</span><span class=
"identifier">optX
</span> <span class=
"special">);
</span>
477 <span class=
"identifier">assert
</span> <span class=
"special">(
</span><span class=
"identifier">addressof
</span><span class=
"special">(*
</span><span class=
"identifier">opt0
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"identifier">addressof
</span><span class=
"special">(
</span><span class=
"identifier">y
</span><span class=
"special">));
</span>
482 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
483 <td align=
"left"></td>
484 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2003-
2007 Fernando Luis Cacciola Carballal
<br>Copyright
© 2014-
2016 Andrzej Krzemie
ński
<p>
485 Distributed under the Boost Software License, Version
1.0. (See accompanying
486 file LICENSE_1_0.txt or copy at
<a href=
"http://www.boost.org/LICENSE_1_0.txt" target=
"_top">http://www.boost.org/LICENSE_1_0.txt
</a>)
491 <div class=
"spirit-nav">
492 <a accesskey=
"p" href=
"detailed_semantics___optional_references.html"><img src=
"../../../../../../../doc/src/images/prev.png" alt=
"Prev"></a><a accesskey=
"u" href=
"../../../optional/reference/header__boost_optional_optional_hpp_.html"><img src=
"../../../../../../../doc/src/images/up.png" alt=
"Up"></a><a accesskey=
"h" href=
"../../../index.html"><img src=
"../../../../../../../doc/src/images/home.png" alt=
"Home"></a><a accesskey=
"n" href=
"../header__boost_optional_hpp_.html"><img src=
"../../../../../../../doc/src/images/next.png" alt=
"Next"></a>