GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::experimental::optional::operator=(3) C++ Standard Libary std::experimental::optional::operator=(3)

std::experimental::optional::operator= - std::experimental::optional::operator=


optional& operator=( std::experimental::nullopt_t ) (1) (library fundamentals TS)
noexcept;
optional& operator=( const optional& other ); (2) (library fundamentals TS)
optional& operator=( optional&& other ) noexcept(/* (3) (library fundamentals TS)
see below */);
template< class U > (4) (library fundamentals TS)
optional& operator=( U&& value );


Replaces contents of *this with the contents of other


1) If *this contains a value before the call, the contained value is destroyed by
calling its destructor as if by val->T::~T(). *this does not contain a value after
this call.
2-3) Assigns the state of other.


* If both *this and other do not contain a value, the function has no effect.
* If *this contains a value, but other does not, then the contained value is
destroyed by calling its destructor. *this does not contain a value after the
call.
* If other contains a value, then depending on whether *this contains a value, the
contained value is either direct-initialized or assigned from *other (2) or
std::move(*other) (3). Note that a moved-from optional still contains a value.


4) Decay-only perfect-forwarded assignment: depending on whether *this contains a
value before the call, the contained value is either direct-initialized from
std::forward<U>(value) or assigned from std::forward<U>(value). The function does
not participate in overload resolution unless std::is_same<std::decay_t<U>,
T>::value is true.


other - another optional object whose contained value to assign
value - value to assign to the contained value


-
T must meet the requirements of CopyAssignable and CopyConstructible in order to use
overload (2).
-
T must meet the requirements of MoveAssignable and MoveConstructible in order to use
overload (3).


*this


2-4) Throws any exception thrown by the constructor or assignment operator of T. If
an exception is thrown, the initialization state of *this (and of other in case of
(2) ) is unchanged, i.e. if the object contained a value, it still contains a value,
and the other way round. The contents of value and the contained values of *this and
other depend on the exception safety guarantees of the operation from which the
exception originates (copy-constructor, move-assignment, etc.).
(3) has the following noexcept declaration:
noexcept specification:
noexcept(std::is_nothrow_move_assignable<T>::value &&
std::is_nothrow_move_constructible<T>::value)


An optional object op may be turned into an empty optional with both op = {}; and op
= nullopt;.

// Run this code


#include <experimental/optional>
#include <iostream>
int main()
{
std::experimental::optional<const char*> s1 = "abc", s2; // constructor
s2 = s1; // assignment
s1 = "def"; // decaying assignment (U = char[4], T = const char*)
std::cout << *s2 << ' ' << *s1 << '\n';
}


abc def


emplace constructs the contained value in-place
(public member function)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.