|
3357 | 3357 | constexpr void reset() noexcept;
|
3358 | 3358 |
|
3359 | 3359 | private:
|
3360 |
| - T* val; // \expos |
| 3360 | + T* @\exposidnc{val}@; // \expos |
3361 | 3361 | };
|
3362 | 3362 |
|
3363 | 3363 | template<class T>
|
|
4263 | 4263 |
|
4264 | 4264 | \begin{itemdescr}
|
4265 | 4265 | \pnum
|
4266 |
| -Let \tcode{U} be \tcode{invoke_result_t<F, decltype(*val)>}. |
| 4266 | +Let \tcode{U} be \tcode{invoke_result_t<F, decltype(*\exposid{val})>}. |
4267 | 4267 |
|
4268 | 4268 | \pnum
|
4269 | 4269 | \mandates
|
|
4274 | 4274 | Equivalent to:
|
4275 | 4275 | \begin{codeblock}
|
4276 | 4276 | if (*this) {
|
4277 |
| - return invoke(std::forward<F>(f), *val); |
| 4277 | + return invoke(std::forward<F>(f), *@\exposid{val}@); |
4278 | 4278 | } else {
|
4279 | 4279 | return remove_cvref_t<U>();
|
4280 | 4280 | }
|
|
4289 | 4289 |
|
4290 | 4290 | \begin{itemdescr}
|
4291 | 4291 | \pnum
|
4292 |
| -Let \tcode{U} be \tcode{invoke_result_t<F, decltype(std::move(*val))>}. |
| 4292 | +Let \tcode{U} be \tcode{invoke_result_t<F, decltype(std::move(*\exposid{val}))>}. |
4293 | 4293 |
|
4294 | 4294 | \pnum
|
4295 | 4295 | \mandates
|
|
4300 | 4300 | Equivalent to:
|
4301 | 4301 | \begin{codeblock}
|
4302 | 4302 | if (*this) {
|
4303 |
| - return invoke(std::forward<F>(f), std::move(*val)); |
| 4303 | + return invoke(std::forward<F>(f), std::move(*@\exposid{val}@)); |
4304 | 4304 | } else {
|
4305 | 4305 | return remove_cvref_t<U>();
|
4306 | 4306 | }
|
|
4315 | 4315 |
|
4316 | 4316 | \begin{itemdescr}
|
4317 | 4317 | \pnum
|
4318 |
| -Let \tcode{U} be \tcode{remove_cv_t<invoke_result_t<F, decltype(*val)>>}. |
| 4318 | +Let \tcode{U} be \tcode{remove_cv_t<invoke_result_t<F, decltype(*\exposid{val})>>}. |
4319 | 4319 |
|
4320 | 4320 | \pnum
|
4321 | 4321 | \mandates
|
4322 | 4322 | \tcode{U} is a non-array object type
|
4323 | 4323 | other than \tcode{in_place_t} or \tcode{nullopt_t}.
|
4324 | 4324 | The declaration
|
4325 | 4325 | \begin{codeblock}
|
4326 |
| -U u(invoke(std::forward<F>(f), *val)); |
| 4326 | +U u(invoke(std::forward<F>(f), *@\exposid{val}@)); |
4327 | 4327 | \end{codeblock}
|
4328 | 4328 | is well-formed for some invented variable \tcode{u}.
|
4329 | 4329 | \begin{note}
|
|
4334 | 4334 | \returns
|
4335 | 4335 | If \tcode{*this} contains a value, an \tcode{optional<U>} object
|
4336 | 4336 | whose contained value is direct-non-list-initialized with
|
4337 |
| -\tcode{invoke(std::forward<F>(f), *val)}; |
| 4337 | +\tcode{invoke(std::forward<F>(f), *\exposid{val})}; |
4338 | 4338 | otherwise, \tcode{optional<U>()}.
|
4339 | 4339 | \end{itemdescr}
|
4340 | 4340 |
|
|
4347 | 4347 | \begin{itemdescr}
|
4348 | 4348 | \pnum
|
4349 | 4349 | Let \tcode{U} be
|
4350 |
| -\tcode{remove_cv_t<invoke_result_t<F, decltype(std::move(*val))>>}. |
| 4350 | +\tcode{remove_cv_t<invoke_result_t<F, decltype(std::move(*\exposid{val}))>>}. |
4351 | 4351 |
|
4352 | 4352 | \pnum
|
4353 | 4353 | \mandates
|
4354 | 4354 | \tcode{U} is a non-array object type
|
4355 | 4355 | other than \tcode{in_place_t} or \tcode{nullopt_t}.
|
4356 | 4356 | The declaration
|
4357 | 4357 | \begin{codeblock}
|
4358 |
| -U u(invoke(std::forward<F>(f), std::move(*val))); |
| 4358 | +U u(invoke(std::forward<F>(f), std::move(*@\exposid{val}@))); |
4359 | 4359 | \end{codeblock}
|
4360 | 4360 | is well-formed for some invented variable \tcode{u}.
|
4361 | 4361 | \begin{note}
|
|
4366 | 4366 | \returns
|
4367 | 4367 | If \tcode{*this} contains a value, an \tcode{optional<U>} object
|
4368 | 4368 | whose contained value is direct-non-list-initialized with
|
4369 |
| -\tcode{invoke(std::forward<F>(f), std::move(*val))}; |
| 4369 | +\tcode{invoke(std::forward<F>(f), std::move(*\exposid{val}))}; |
4370 | 4370 | otherwise, \tcode{optional<U>()}.
|
4371 | 4371 | \end{itemdescr}
|
4372 | 4372 |
|
|
0 commit comments