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::make_optional(3) C++ Standard Libary std::make_optional(3)

std::make_optional - std::make_optional


Defined in header <optional>
template< class T >
constexpr std::optional<std::decay_t<T>> make_optional( T&& value (1) (since C++17)
);
template< class T, class... Args > (2) (since C++17)
constexpr std::optional<T> make_optional( Args&&... args );
template< class T, class U, class... Args >
constexpr std::optional<T> make_optional( std::initializer_list<U> (3) (since C++17)
il, Args&&... args );


1) Creates an optional object from value. Effectively calls
std::optional<std::decay_t<T>>(std::forward<T>(value))
2) Creates an optional object constructed in-place from args.... Equivalent to
return std::optional<T>(std::in_place, std::forward<Args>(args)...);.
3) Creates an optional object constructed in-place from il and args.... Equivalent
to return std::optional<T>(std::in_place, il, std::forward<Args>(args)...);.


value - the value to construct optional object with
il, args - arguments to be passed to the constructor of T.


The constructed optional object.


Throws any exception thrown by the constructor of T.


T need not be movable for overloads (2-3) due to guaranteed copy elision.

// Run this code


#include <optional>
#include <iostream>
#include <iomanip>
#include <vector>
#include <string>


int main()
{
auto op1 = std::make_optional<std::vector<char>>({'a','b','c'});
std::cout << "op1: ";
for (char c: op1.value()){
std::cout << c << ",";
}
auto op2 = std::make_optional<std::vector<int>>(5, 2);
std::cout << "\nop2: ";
for (int i: *op2){
std::cout << i << ",";
}
std::string str{"hello world"};
auto op3 = std::make_optional<std::string>(std::move(str));
std::cout << "\nop3: " << quoted(op3.value_or("empty value")) << '\n';
std::cout << "str: " << std::quoted(str) << '\n';
}


op1: a,b,c,
op2: 2,2,2,2,2,
op3: "hello world"
str: ""


constructor constructs the optional object
(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.