playground/cpp/optional.cpp

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
*/