42 lines
770 B
C++
42 lines
770 B
C++
// https://en.cppreference.com/w/cpp/utility/optional
|
|
|
|
#include<iostream>
|
|
#include<optional>
|
|
|
|
std::optional<int> pred(bool cond)
|
|
{
|
|
if(cond)
|
|
{
|
|
return 100;
|
|
}
|
|
return {};
|
|
}
|
|
|
|
int main()
|
|
{
|
|
// value_or
|
|
std::cout << pred(false).value_or(0) << "\n";
|
|
std::cout << pred(true).value_or(0) << "\n";
|
|
|
|
// value
|
|
/*
|
|
std::cout << pred(false).value() << "\n";
|
|
terminate called after throwing an instance of 'std::bad_optional_access'
|
|
what(): bad optional access
|
|
Aborted (core dumped)
|
|
*/
|
|
std::cout << pred(true).value() << "\n";
|
|
|
|
// has_value
|
|
std::cout << pred(false).has_value() << "\n"; // 0
|
|
std::cout << pred(true).has_value() << "\n"; // 1
|
|
|
|
}
|
|
|
|
/*
|
|
$ g++ optional.cpp --std=c++17 -o a.out
|
|
$ ./a.out
|
|
0
|
|
100
|
|
*/
|