3 <meta http-equiv=
"Content-Type" content=
"text/html; charset=US-ASCII">
4 <title>Detailed Semantics - Optional References
</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_values.html" title=
"Detailed Semantics - Optional Values">
10 <link rel=
"next" href=
"detailed_semantics___free_functions.html" title=
"Detailed Semantics - Free Functions">
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_values.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=
"detailed_semantics___free_functions.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___optional_references"></a><a class=
"link" href=
"detailed_semantics___optional_references.html" title=
"Detailed Semantics - Optional References">Detailed
28 Semantics - Optional References
</a>
29 </h4></div></div></div>
31 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
33 <a name=
"reference_optional_ref_default_ctor"></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">optional
</span><span class=
"special">()
</span>
35 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
36 </p></blockquote></div>
37 <div class=
"blockquote"><blockquote class=
"blockquote"><p>
38 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">optional
</span><span class=
"special">(
</span><span class=
"identifier">none_t
</span><span class=
"special">)
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
39 </p></blockquote></div>
40 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
41 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">false
</span></code>;
<code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code> refers to nothing.
44 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
46 <a name=
"reference_optional_ref_value_ctor"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
47 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">R
</span><span class=
"special">></span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">optional
</span><span class=
"special">(
</span><span class=
"identifier">R
</span><span class=
"special">&&</span> <span class=
"identifier">r
</span><span class=
"special">)
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
48 </p></blockquote></div>
49 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
51 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">true
</span></code>;
<code class=
"computeroutput"><span class=
"identifier">addressof
</span><span class=
"special">(**
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"identifier">addressof
</span><span class=
"special">(
</span><span class=
"identifier">r
</span><span class=
"special">)
</span></code>.
54 <span class=
"bold"><strong>Remarks:
</strong></span> Unless
<code class=
"computeroutput"><span class=
"identifier">R
</span></code>
55 is an lvalue reference, the program is ill-formed. This constructor
56 does not participate in overload resolution if
<code class=
"computeroutput"><span class=
"identifier">decay
</span><span class=
"special"><</span><span class=
"identifier">R
</span><span class=
"special">></span></code> is an instance of
<code class=
"computeroutput"><span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">optional
</span></code>.
59 <span class=
"bold"><strong>Notes:
</strong></span> This constructor is declared
60 <code class=
"computeroutput"><span class=
"keyword">explicit
</span></code> on compilers
61 that do not correctly suport binding to const lvalues of integral types.
62 For more details
<a class=
"link" href=
"../../dependencies_and_portability/optional_reference_binding.html#optional_reference_binding">see here
</a>.
65 <span class=
"bold"><strong>Example:
</strong></span>
66 <pre class=
"programlisting"><span class=
"identifier">T
</span> <span class=
"identifier">v
</span><span class=
"special">;
</span>
67 <span class=
"identifier">T
</span><span class=
"special">&</span> <span class=
"identifier">vref
</span> <span class=
"special">=
</span> <span class=
"identifier">v
</span> <span class=
"special">;
</span>
68 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&></span> <span class=
"identifier">opt
</span><span class=
"special">(
</span><span class=
"identifier">vref
</span><span class=
"special">);
</span>
69 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">opt
</span> <span class=
"special">==
</span> <span class=
"identifier">v
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
70 <span class=
"special">++
</span> <span class=
"identifier">v
</span> <span class=
"special">;
</span> <span class=
"comment">// mutate referee
</span>
71 <span class=
"identifier">assert
</span> <span class=
"special">(*
</span><span class=
"identifier">opt
</span> <span class=
"special">==
</span> <span class=
"identifier">v
</span><span class=
"special">);
</span>
76 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
78 <a name=
"reference_optional_ref_cond_value_ctor"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
79 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">R
</span><span class=
"special">></span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">optional
</span><span class=
"special">(
</span><span class=
"keyword">bool
</span> <span class=
"identifier">cond
</span><span class=
"special">,
</span> <span class=
"identifier">R
</span><span class=
"special">&&</span>
80 <span class=
"identifier">r
</span><span class=
"special">)
</span>
81 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
82 </p></blockquote></div>
83 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
85 <span class=
"bold"><strong>Effects:
</strong></span> Initializes
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code> with expression
<code class=
"computeroutput"><span class=
"identifier">cond
</span> <span class=
"special">?
</span>
86 <span class=
"identifier">addressof
</span><span class=
"special">(
</span><span class=
"identifier">r
</span><span class=
"special">)
</span> <span class=
"special">:
</span> <span class=
"keyword">nullptr
</span></code>.
89 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"identifier">cond
</span></code>; If
<code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span></code>,
<code class=
"computeroutput"><span class=
"identifier">addressof
</span><span class=
"special">(**
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"identifier">addressof
</span><span class=
"special">(
</span><span class=
"identifier">r
</span><span class=
"special">)
</span></code>.
92 <span class=
"bold"><strong>Remarks:
</strong></span> Unless
<code class=
"computeroutput"><span class=
"identifier">R
</span></code>
93 is an lvalue reference, the program is ill-formed. This constructor
94 does not participate in overload resolution if
<code class=
"computeroutput"><span class=
"identifier">decay
</span><span class=
"special"><</span><span class=
"identifier">R
</span><span class=
"special">></span></code> is an instance of
<code class=
"computeroutput"><span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">optional
</span></code>.
98 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
100 <a name=
"reference_optional_ref_copy_ctor"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
101 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">optional
</span> <span class=
"special">(
</span>
102 <span class=
"identifier">optional
</span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">rhs
</span>
103 <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span>
104 <span class=
"special">;
</span></code>
105 </p></blockquote></div>
106 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
107 <li class=
"listitem">
108 <span class=
"bold"><strong>Effects:
</strong></span> Initializes
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code> with expression
<code class=
"computeroutput"><span class=
"identifier">rhs
</span><span class=
"special">.
</span><span class=
"identifier">ref
</span></code>.
110 <li class=
"listitem">
111 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">bool
</span><span class=
"special">(
</span><span class=
"identifier">rhs
</span><span class=
"special">)
</span></code>.
113 <li class=
"listitem">
114 <span class=
"bold"><strong>Example:
</strong></span>
115 <pre class=
"programlisting"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&></span> <span class=
"identifier">uninit
</span> <span class=
"special">;
</span>
116 <span class=
"identifier">assert
</span> <span class=
"special">(!
</span><span class=
"identifier">uninit
</span><span class=
"special">);
</span>
118 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&></span> <span class=
"identifier">uinit2
</span> <span class=
"special">(
</span> <span class=
"identifier">uninit
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
119 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">uninit2
</span> <span class=
"special">==
</span> <span class=
"identifier">uninit
</span> <span class=
"special">);
</span>
121 <span class=
"identifier">T
</span> <span class=
"identifier">v
</span> <span class=
"special">=
</span> <span class=
"number">2</span> <span class=
"special">;
</span> <span class=
"identifier">T
</span><span class=
"special">&</span> <span class=
"identifier">ref
</span> <span class=
"special">=
</span> <span class=
"identifier">v
</span> <span class=
"special">;
</span>
122 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">init
</span><span class=
"special">(
</span><span class=
"identifier">ref
</span><span class=
"special">);
</span>
123 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">init
</span> <span class=
"special">==
</span> <span class=
"identifier">v
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
125 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">></span> <span class=
"identifier">init2
</span> <span class=
"special">(
</span> <span class=
"identifier">init
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
126 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">init2
</span> <span class=
"special">==
</span> <span class=
"identifier">v
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
128 <span class=
"identifier">v
</span> <span class=
"special">=
</span> <span class=
"number">3</span> <span class=
"special">;
</span>
130 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">init
</span> <span class=
"special">==
</span> <span class=
"number">3</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
131 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">init2
</span> <span class=
"special">==
</span> <span class=
"number">3</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
136 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
138 <a name=
"reference_optional_ref_ctor_from_opt_U"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
139 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">U
</span><span class=
"special">></span> <span class=
"keyword">explicit
</span>
140 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">optional
</span> <span class=
"special">(
</span>
141 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">U
</span><span class=
"special">&></span>
142 <span class=
"keyword">const
</span><span class=
"special">&</span>
143 <span class=
"identifier">rhs
</span> <span class=
"special">)
</span>
144 <span class=
"keyword">noexcept
</span> <span class=
"special">;
</span></code>
145 </p></blockquote></div>
146 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
147 <li class=
"listitem">
148 <span class=
"bold"><strong>Requires:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">is_convertible
</span><span class=
"special"><</span><span class=
"identifier">U
</span><span class=
"special">&,
</span> <span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">value
</span></code>
149 is
<code class=
"computeroutput"><span class=
"keyword">true
</span></code>.
151 <li class=
"listitem">
152 <span class=
"bold"><strong>Effects:
</strong></span> Initializes
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code> with expression
<code class=
"computeroutput"><span class=
"identifier">rhs
</span><span class=
"special">.
</span><span class=
"identifier">ref
</span></code>.
154 <li class=
"listitem">
155 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">bool
</span><span class=
"special">(
</span><span class=
"identifier">rhs
</span><span class=
"special">)
</span></code>.
159 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
161 <a name=
"reference_optional_ref_assign_none_t"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
162 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"keyword">operator
</span><span class=
"special">=
</span> <span class=
"special">(
</span> <span class=
"identifier">none_t
</span>
163 <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span>
164 <span class=
"special">;
</span></code>
165 </p></blockquote></div>
166 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
167 <li class=
"listitem">
168 <span class=
"bold"><strong>Effects:
</strong></span> Assigns
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code>
169 with expression
<code class=
"computeroutput"><span class=
"keyword">nullptr
</span></code>.
171 <li class=
"listitem">
172 <span class=
"bold"><strong>returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code>.
174 <li class=
"listitem">
175 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">false
</span></code>.
178 <a name=
"reference_optional_ref_copy_assign"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
179 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special">&</span>
180 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"keyword">operator
</span><span class=
"special">=
</span> <span class=
"special">(
</span> <span class=
"identifier">optional
</span>
181 <span class=
"keyword">const
</span><span class=
"special">&</span>
182 <span class=
"identifier">rhs
</span> <span class=
"special">)
</span>
183 <span class=
"keyword">noexcept
</span> <span class=
"special">;
</span></code>
184 </p></blockquote></div>
185 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
186 <li class=
"listitem">
187 <span class=
"bold"><strong>Effects:
</strong></span> Assigns
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code>
188 with expression
<code class=
"computeroutput"><span class=
"identifier">rhs
</span><span class=
"special">.
</span><span class=
"identifier">ref
</span></code>.
190 <li class=
"listitem">
191 <span class=
"bold"><strong>returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code>.
193 <li class=
"listitem">
194 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">bool
</span><span class=
"special">(
</span><span class=
"identifier">rhs
</span><span class=
"special">)
</span></code>.
196 <li class=
"listitem">
197 <span class=
"bold"><strong>Notes:
</strong></span> This behaviour is called
<span class=
"emphasis"><em>rebinding
198 semantics
</em></span>. See
<a class=
"link" href=
"../../tutorial/optional_references/rebinding_semantics_for_assignment_of_optional_references.html" title=
"Rebinding semantics for assignment of optional references">here
</a>
201 <li class=
"listitem">
202 <span class=
"bold"><strong>Example:
</strong></span>
203 <pre class=
"programlisting"><span class=
"keyword">int
</span> <span class=
"identifier">a
</span> <span class=
"special">=
</span> <span class=
"number">1</span> <span class=
"special">;
</span>
204 <span class=
"keyword">int
</span> <span class=
"identifier">b
</span> <span class=
"special">=
</span> <span class=
"number">2</span> <span class=
"special">;
</span>
205 <span class=
"identifier">T
</span><span class=
"special">&</span> <span class=
"identifier">ra
</span> <span class=
"special">=
</span> <span class=
"identifier">a
</span> <span class=
"special">;
</span>
206 <span class=
"identifier">T
</span><span class=
"special">&</span> <span class=
"identifier">rb
</span> <span class=
"special">=
</span> <span class=
"identifier">b
</span> <span class=
"special">;
</span>
207 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">int
</span><span class=
"special">&></span> <span class=
"identifier">def
</span> <span class=
"special">;
</span>
208 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">int
</span><span class=
"special">&></span> <span class=
"identifier">ora
</span><span class=
"special">(
</span><span class=
"identifier">ra
</span><span class=
"special">)
</span> <span class=
"special">;
</span>
209 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">int
</span><span class=
"special">&></span> <span class=
"identifier">orb
</span><span class=
"special">(
</span><span class=
"identifier">rb
</span><span class=
"special">)
</span> <span class=
"special">;
</span>
211 <span class=
"identifier">def
</span> <span class=
"special">=
</span> <span class=
"identifier">orb
</span> <span class=
"special">;
</span> <span class=
"comment">// binds 'def' to 'b' through 'rb' wrapped within 'orb'
</span>
212 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">def
</span> <span class=
"special">==
</span> <span class=
"identifier">b
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
213 <span class=
"special">*
</span><span class=
"identifier">def
</span> <span class=
"special">=
</span> <span class=
"identifier">ora
</span> <span class=
"special">;
</span> <span class=
"comment">// changes the value of 'b' to a copy of the value of 'a'
</span>
214 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">b
</span> <span class=
"special">==
</span> <span class=
"identifier">a
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
215 <span class=
"keyword">int
</span> <span class=
"identifier">c
</span> <span class=
"special">=
</span> <span class=
"number">3</span><span class=
"special">;
</span>
216 <span class=
"keyword">int
</span><span class=
"special">&</span> <span class=
"identifier">rc
</span> <span class=
"special">=
</span> <span class=
"identifier">c
</span> <span class=
"special">;
</span>
217 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">int
</span><span class=
"special">&></span> <span class=
"identifier">orc
</span><span class=
"special">(
</span><span class=
"identifier">rc
</span><span class=
"special">)
</span> <span class=
"special">;
</span>
218 <span class=
"identifier">ora
</span> <span class=
"special">=
</span> <span class=
"identifier">orc
</span> <span class=
"special">;
</span> <span class=
"comment">// REBINDS ora to 'c' through 'rc'
</span>
219 <span class=
"identifier">c
</span> <span class=
"special">=
</span> <span class=
"number">4</span> <span class=
"special">;
</span>
220 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">ora
</span> <span class=
"special">==
</span> <span class=
"number">4</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
224 <a name=
"reference_optional_ref_assign_optional_U"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
225 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">U
</span><span class=
"special">></span> <span class=
"identifier">optional
</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">operator
</span><span class=
"special">=
</span> <span class=
"special">(
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">U
</span><span class=
"special">&></span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">rhs
</span>
226 <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span>
227 <span class=
"special">;
</span></code>
228 </p></blockquote></div>
229 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
230 <li class=
"listitem">
231 <span class=
"bold"><strong>Requires:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">is_convertible
</span><span class=
"special"><</span><span class=
"identifier">U
</span><span class=
"special">&,
</span> <span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">value
</span></code>
232 is
<code class=
"computeroutput"><span class=
"keyword">true
</span></code>.
234 <li class=
"listitem">
235 <span class=
"bold"><strong>Effects:
</strong></span> Assigns
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code>
236 with expression
<code class=
"computeroutput"><span class=
"identifier">rhs
</span><span class=
"special">.
</span><span class=
"identifier">ref
</span></code>.
238 <li class=
"listitem">
239 <span class=
"bold"><strong>returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code>.
241 <li class=
"listitem">
242 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">bool
</span><span class=
"special">(
</span><span class=
"identifier">rhs
</span><span class=
"special">)
</span></code>.
246 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
248 <a name=
"reference_optional_ref_assign_R"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
249 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">R
</span><span class=
"special">></span> <span class=
"identifier">optional
</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">operator
</span><span class=
"special">=
</span> <span class=
"special">(
</span> <span class=
"identifier">R
</span><span class=
"special">&&</span> <span class=
"identifier">r
</span>
250 <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span>
251 <span class=
"special">;
</span></code>
252 </p></blockquote></div>
253 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
254 <li class=
"listitem">
255 <span class=
"bold"><strong>Effects:
</strong></span> Assigns
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code>
256 with expression
<code class=
"computeroutput"><span class=
"identifier">r
</span></code>.
258 <li class=
"listitem">
259 <span class=
"bold"><strong>returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span></code>.
261 <li class=
"listitem">
262 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">true
</span></code>.
264 <li class=
"listitem">
265 <span class=
"bold"><strong>Remarks:
</strong></span> Unless
<code class=
"computeroutput"><span class=
"identifier">R
</span></code>
266 is an lvalue reference, the program is ill-formed. This function does
267 not participate in overload resolution if
<code class=
"computeroutput"><span class=
"identifier">decay
</span><span class=
"special"><</span><span class=
"identifier">R
</span><span class=
"special">></span></code> is an instance of
<code class=
"computeroutput"><span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">optional
</span></code>.
269 <li class=
"listitem">
270 <span class=
"bold"><strong>Example:
</strong></span>
271 <pre class=
"programlisting"><span class=
"keyword">int
</span> <span class=
"identifier">a
</span> <span class=
"special">=
</span> <span class=
"number">1</span> <span class=
"special">;
</span>
272 <span class=
"keyword">int
</span> <span class=
"identifier">b
</span> <span class=
"special">=
</span> <span class=
"number">2</span> <span class=
"special">;
</span>
273 <span class=
"identifier">T
</span><span class=
"special">&</span> <span class=
"identifier">ra
</span> <span class=
"special">=
</span> <span class=
"identifier">a
</span> <span class=
"special">;
</span>
274 <span class=
"identifier">T
</span><span class=
"special">&</span> <span class=
"identifier">rb
</span> <span class=
"special">=
</span> <span class=
"identifier">b
</span> <span class=
"special">;
</span>
275 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">int
</span><span class=
"special">&></span> <span class=
"identifier">def
</span> <span class=
"special">;
</span>
276 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"keyword">int
</span><span class=
"special">&></span> <span class=
"identifier">opt
</span><span class=
"special">(
</span><span class=
"identifier">ra
</span><span class=
"special">)
</span> <span class=
"special">;
</span>
278 <span class=
"identifier">def
</span> <span class=
"special">=
</span> <span class=
"identifier">rb
</span> <span class=
"special">;
</span> <span class=
"comment">// binds 'def' to 'b' through 'rb'
</span>
279 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">def
</span> <span class=
"special">==
</span> <span class=
"identifier">b
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
280 <span class=
"special">*
</span><span class=
"identifier">def
</span> <span class=
"special">=
</span> <span class=
"identifier">a
</span> <span class=
"special">;
</span> <span class=
"comment">// changes the value of 'b' to a copy of the value of 'a'
</span>
281 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">b
</span> <span class=
"special">==
</span> <span class=
"identifier">a
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
282 <span class=
"keyword">int
</span> <span class=
"identifier">c
</span> <span class=
"special">=
</span> <span class=
"number">3</span><span class=
"special">;
</span>
283 <span class=
"keyword">int
</span><span class=
"special">&</span> <span class=
"identifier">rc
</span> <span class=
"special">=
</span> <span class=
"identifier">c
</span> <span class=
"special">;
</span>
284 <span class=
"identifier">opt
</span> <span class=
"special">=
</span> <span class=
"identifier">rc
</span> <span class=
"special">;
</span> <span class=
"comment">// REBINDS to 'c' through 'rc'
</span>
285 <span class=
"identifier">c
</span> <span class=
"special">=
</span> <span class=
"number">4</span> <span class=
"special">;
</span>
286 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">opt
</span> <span class=
"special">==
</span> <span class=
"number">4</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
291 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
293 <a name=
"reference_optional_ref_emplace_R"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
294 <code class=
"computeroutput"><span class=
"keyword">void
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">emplace
</span><span class=
"special">(
</span> <span class=
"identifier">R
</span><span class=
"special">&&</span> <span class=
"identifier">r
</span>
295 <span class=
"special">)
</span> <span class=
"keyword">noexcept
</span>
296 <span class=
"special">;
</span></code>
297 </p></blockquote></div>
298 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
299 <li class=
"listitem">
300 <span class=
"bold"><strong>Effects:
</strong></span> Assigns
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code>
301 with expression
<code class=
"computeroutput"><span class=
"identifier">r
</span></code>.
303 <li class=
"listitem">
304 <span class=
"bold"><strong>Postconditions:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">true
</span></code>.
306 <li class=
"listitem">
307 <span class=
"bold"><strong>Remarks:
</strong></span> Unless
<code class=
"computeroutput"><span class=
"identifier">R
</span></code>
308 is an lvalue reference, the program is ill-formed. This function does
309 not participate in overload resolution if
<code class=
"computeroutput"><span class=
"identifier">decay
</span><span class=
"special"><</span><span class=
"identifier">R
</span><span class=
"special">></span></code> is an instance of
<code class=
"computeroutput"><span class=
"identifier">boost
</span><span class=
"special">::
</span><span class=
"identifier">optional
</span></code>.
313 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
315 <a name=
"reference_optional_ref_get"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
316 <code class=
"computeroutput"><span class=
"identifier">T
</span><span class=
"special">&</span>
317 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">get
</span><span class=
"special">()
</span> <span class=
"keyword">const
</span> <span class=
"special">;
</span></code>
318 </p></blockquote></div>
319 <div class=
"blockquote"><blockquote class=
"blockquote"><p>
320 <code class=
"computeroutput"><span class=
"identifier">T
</span><span class=
"special">&</span>
321 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"keyword">operator
</span> <span class=
"special">*()
</span>
322 <span class=
"keyword">const
</span> <span class=
"special">;
</span></code>
323 </p></blockquote></div>
324 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
325 <li class=
"listitem">
326 <span class=
"bold"><strong>Requires:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">true
</span></code>.
328 <li class=
"listitem">
329 <span class=
"bold"><strong>Effects:
</strong></span> Returns
<code class=
"computeroutput"><span class=
"special">*
</span><span class=
"identifier">ref
</span></code>.
331 <li class=
"listitem">
332 <span class=
"bold"><strong>Throws:
</strong></span> Nothing.
334 <li class=
"listitem">
335 <span class=
"bold"><strong>Example:
</strong></span>
336 <pre class=
"programlisting"><span class=
"identifier">T
</span> <span class=
"identifier">v
</span> <span class=
"special">;
</span>
337 <span class=
"identifier">T
</span><span class=
"special">&</span> <span class=
"identifier">vref
</span> <span class=
"special">=
</span> <span class=
"identifier">v
</span> <span class=
"special">;
</span>
338 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&></span> <span class=
"identifier">opt
</span> <span class=
"special">(
</span> <span class=
"identifier">vref
</span> <span class=
"special">);
</span>
339 <span class=
"identifier">T
</span> <span class=
"keyword">const
</span><span class=
"special">&</span> <span class=
"identifier">vref2
</span> <span class=
"special">=
</span> <span class=
"special">*
</span><span class=
"identifier">opt
</span><span class=
"special">;
</span>
340 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"identifier">vref2
</span> <span class=
"special">==
</span> <span class=
"identifier">v
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
341 <span class=
"special">++
</span> <span class=
"identifier">v
</span> <span class=
"special">;
</span>
342 <span class=
"identifier">assert
</span> <span class=
"special">(
</span> <span class=
"special">*
</span><span class=
"identifier">opt
</span> <span class=
"special">==
</span> <span class=
"identifier">v
</span> <span class=
"special">)
</span> <span class=
"special">;
</span>
347 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
349 <a name=
"reference_optional_ref_arrow"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
350 <code class=
"computeroutput"><span class=
"identifier">T
</span><span class=
"special">*
</span>
351 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"keyword">operator
</span> <span class=
"special">-
></span>
352 <span class=
"special">()
</span> <span class=
"keyword">const
</span>
353 <span class=
"special">;
</span></code>
354 </p></blockquote></div>
355 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
356 <li class=
"listitem">
357 <span class=
"bold"><strong>Requires:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">==
</span> <span class=
"keyword">true
</span></code>.
359 <li class=
"listitem">
360 <span class=
"bold"><strong>Effects:
</strong></span> Returns
<code class=
"computeroutput"><span class=
"identifier">ref
</span></code>.
362 <li class=
"listitem">
363 <span class=
"bold"><strong>Throws:
</strong></span> Nothing.
367 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
369 <a name=
"reference_optional_ref_value"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
370 <code class=
"computeroutput"><span class=
"identifier">T
</span><span class=
"special">&</span>
371 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">value
</span><span class=
"special">()
</span> <span class=
"keyword">const
</span> <span class=
"special">;
</span></code>
372 </p></blockquote></div>
373 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
374 <span class=
"bold"><strong>Effects:
</strong></span> Equivalent to
<code class=
"computeroutput"><span class=
"keyword">return
</span> <span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"special">?
</span> <span class=
"special">*
</span><span class=
"identifier">val
</span> <span class=
"special">:
</span> <span class=
"keyword">throw
</span> <span class=
"identifier">bad_optional_access
</span><span class=
"special">();
</span></code>.
377 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
379 <a name=
"reference_optional_ref_value_or"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
380 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">R
</span><span class=
"special">></span> <span class=
"identifier">T
</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">value_or
</span><span class=
"special">(
</span> <span class=
"identifier">R
</span><span class=
"special">&&</span> <span class=
"identifier">r
</span>
381 <span class=
"special">)
</span> <span class=
"keyword">const
</span>
382 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
383 </p></blockquote></div>
384 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
385 <li class=
"listitem">
386 <span class=
"bold"><strong>Effects:
</strong></span> Equivalent to
<code class=
"computeroutput"><span class=
"keyword">if
</span> <span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"keyword">return
</span> <span class=
"special">**
</span><span class=
"keyword">this
</span><span class=
"special">;
</span> <span class=
"keyword">else
</span> <span class=
"keyword">return
</span>
387 <span class=
"identifier">r
</span><span class=
"special">;
</span></code>.
389 <li class=
"listitem">
390 <span class=
"bold"><strong>Remarks:
</strong></span> Unless
<code class=
"computeroutput"><span class=
"identifier">R
</span></code>
391 is an lvalue reference, the program is ill-formed.
395 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
397 <a name=
"reference_optional_ref_value_or_eval"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
398 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">F
</span><span class=
"special">></span> <span class=
"identifier">T
</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">value_or
</span><span class=
"special">(
</span> <span class=
"identifier">F
</span> <span class=
"identifier">f
</span> <span class=
"special">)
</span> <span class=
"keyword">const
</span> <span class=
"special">;
</span></code>
399 </p></blockquote></div>
400 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
401 <li class=
"listitem">
402 <span class=
"bold"><strong>Effects:
</strong></span> Equivalent to
<code class=
"computeroutput"><span class=
"keyword">if
</span> <span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span> <span class=
"keyword">return
</span> <span class=
"special">**
</span><span class=
"keyword">this
</span><span class=
"special">;
</span> <span class=
"keyword">else
</span> <span class=
"keyword">return
</span>
403 <span class=
"identifier">f
</span><span class=
"special">();
</span></code>.
405 <li class=
"listitem">
406 <span class=
"bold"><strong>Remarks:
</strong></span> Unless
<code class=
"computeroutput"><span class=
"keyword">decltype
</span><span class=
"special">(
</span><span class=
"identifier">f
</span><span class=
"special">())
</span></code> is an lvalue reference, the program
411 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
413 <a name=
"reference_optional_ref_get_ptr"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
414 <code class=
"computeroutput"><span class=
"identifier">T
</span><span class=
"special">*
</span>
415 <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">get_ptr
</span> <span class=
"special">()
</span>
416 <span class=
"keyword">const
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
417 </p></blockquote></div>
418 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
419 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"identifier">ref
</span></code>.
422 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
424 <a name=
"reference_optional_ref_operator_bool"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
425 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"keyword">operator
</span> <span class=
"keyword">bool
</span>
426 <span class=
"special">()
</span> <span class=
"keyword">const
</span>
427 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
428 </p></blockquote></div>
429 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
430 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"keyword">bool
</span><span class=
"special">(
</span><span class=
"identifier">ref
</span><span class=
"special">)
</span></code>.
433 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
435 <a name=
"reference_optional_ref_operator_not"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
436 <code class=
"computeroutput"><span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"keyword">operator
</span> <span class=
"special">!
</span> <span class=
"special">()
</span> <span class=
"keyword">const
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
437 </p></blockquote></div>
438 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; "><li class=
"listitem">
439 <span class=
"bold"><strong>Returns:
</strong></span> <code class=
"computeroutput"><span class=
"special">!
</span><span class=
"keyword">bool
</span><span class=
"special">(
</span><span class=
"identifier">ref
</span><span class=
"special">)
</span></code>.
442 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
444 <a name=
"reference_optional_ref_reset"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
445 <code class=
"computeroutput"><span class=
"keyword">void
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">reset
</span><span class=
"special">()
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
446 </p></blockquote></div>
447 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
448 <li class=
"listitem">
449 <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.
451 <li class=
"listitem">
452 <span class=
"bold"><strong>Remarks:
</strong></span> This function is depprecated.
456 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
458 <a name=
"reference_optional_ref_reset_value"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
459 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">R
</span><span class=
"special">></span> <span class=
"keyword">void
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">reset
</span> <span class=
"special">(
</span> <span class=
"identifier">R
</span><span class=
"special">&&</span>
460 <span class=
"identifier">r
</span><span class=
"special">)
</span>
461 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
462 </p></blockquote></div>
463 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
464 <li class=
"listitem">
465 <span class=
"bold"><strong>Effects:
</strong></span> Equivalent to
<code class=
"computeroutput"><span class=
"special">*
</span><span class=
"keyword">this
</span> <span class=
"special">=
</span> <span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">forward
</span><span class=
"special"><</span><span class=
"identifier">R
</span><span class=
"special">>(
</span><span class=
"identifier">r
</span><span class=
"special">)
</span></code>.
467 <li class=
"listitem">
468 <span class=
"bold"><strong>Remarks:
</strong></span> This function is depprecated.
472 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
474 <a name=
"reference_optional_ref_is_initialized"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
475 <code class=
"computeroutput"><span class=
"keyword">bool
</span> <span class=
"identifier">optional
</span><span class=
"special"><</span><span class=
"identifier">T
</span><span class=
"special">&>::
</span><span class=
"identifier">is_initialized
</span><span class=
"special">()
</span> <span class=
"keyword">const
</span> <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
476 </p></blockquote></div>
477 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
478 <li class=
"listitem">
479 <span class=
"bold"><strong>Effects:
</strong></span> Equivalent to
<code class=
"computeroutput"><span class=
"keyword">return
</span> <span class=
"keyword">bool
</span><span class=
"special">(*
</span><span class=
"keyword">this
</span><span class=
"special">)
</span></code>.
481 <li class=
"listitem">
482 <span class=
"bold"><strong>Remarks:
</strong></span> This function is depprecated.
486 <span class=
"inlinemediaobject"><img src=
"../../../images/space.png" alt=
"space"></span>
488 <a name=
"reference_optional_ref_get_value_or_value"></a><div class=
"blockquote"><blockquote class=
"blockquote"><p>
489 <code class=
"computeroutput"><span class=
"keyword">template
</span><span class=
"special"><</span><span class=
"keyword">class
</span> <span class=
"identifier">R
</span><span class=
"special">></span> <span class=
"identifier">T
</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">get_value_or
</span><span class=
"special">(
</span> <span class=
"identifier">R
</span><span class=
"special">&&</span> <span class=
"identifier">r
</span>
490 <span class=
"special">)
</span> <span class=
"keyword">const
</span>
491 <span class=
"keyword">noexcept
</span><span class=
"special">;
</span></code>
492 </p></blockquote></div>
493 <div class=
"itemizedlist"><ul class=
"itemizedlist" style=
"list-style-type: disc; ">
494 <li class=
"listitem">
495 <span class=
"bold"><strong>Effects:
</strong></span> Equivalent to
<code class=
"computeroutput"><span class=
"keyword">return
</span> <span class=
"identifier">value_or
</span><span class=
"special">(
</span><span class=
"identifier">std
</span><span class=
"special">::
</span><span class=
"identifier">forward
</span><span class=
"special"><</span><span class=
"identifier">R
</span><span class=
"special">>(
</span><span class=
"identifier">r
</span><span class=
"special">);
</span></code>.
497 <li class=
"listitem">
498 <span class=
"bold"><strong>Remarks:
</strong></span> This function is depprecated.
502 <table xmlns:
rev=
"http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width=
"100%"><tr>
503 <td align=
"left"></td>
504 <td align=
"right"><div class=
"copyright-footer">Copyright
© 2003-
2007 Fernando Luis Cacciola Carballal
<br>Copyright
© 2014-
2016 Andrzej Krzemie
ński
<p>
505 Distributed under the Boost Software License, Version
1.0. (See accompanying
506 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>)
511 <div class=
"spirit-nav">
512 <a accesskey=
"p" href=
"detailed_semantics___optional_values.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=
"detailed_semantics___free_functions.html"><img src=
"../../../../../../../doc/src/images/next.png" alt=
"Next"></a>