userver
C++ Async Framework
Loading...
Searching...
No Matches
optionals.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/utils/optionals.hpp
4
/// @brief Helper functions for std optionals
5
/// @ingroup userver_universal
6
7
#
include
<
optional
>
8
#
include
<
string
>
9
#
include
<
utility
>
10
11
#
include
<
fmt
/
compile
.
h
>
12
#
include
<
fmt
/
format
.
h
>
13
14
USERVER_NAMESPACE_BEGIN
15
16
namespace
utils
{
17
18
/// Converts std::optional to a string, empty value represented as "--"
19
template
<
class
T>
20
std::string
ToString
(
const
std::optional<T>& from) {
21
return
from ? fmt::format(FMT_COMPILE(
" {}"
), *from) :
"--"
;
22
}
23
24
/// A polyfill for C++23 monadic operations for `std::optional`.
25
template
<
typename
T,
typename
Func>
26
auto
OptionalTransform
(T&& opt, Func func) -> std::optional<
decltype
(std::move(func)(*std::forward<T>(opt)))> {
27
if
(opt)
return
std::move(func)(*std::forward<T>(opt));
28
return
std::nullopt;
29
}
30
31
}
// namespace utils
32
33
USERVER_NAMESPACE_END
userver
utils
optionals.hpp
Generated on Tue Sep 2 2025 12:42:23 for userver by
Doxygen
1.13.2