userver
C++ Async Framework
Loading...
Searching...
No Matches
forward_like.hpp
Go to the documentation of this file.
1
#
pragma
once
2
3
/// @file userver/utils/forward_like.hpp
4
/// @brief @copybrief utils::ForwardLike
5
6
#
include
<
type_traits
>
7
#
include
<
utility
>
8
9
#
include
<
userver
/
compiler
/
impl
/
nodebug
.
hpp
>
10
11
USERVER_NAMESPACE_BEGIN
12
13
namespace
utils
{
14
15
// Analogue of std::forward_like from c++23.
16
template
<
typename
TOwner,
typename
TMember>
17
USERVER_IMPL_NODEBUG
decltype
(
auto
) ForwardLike(TMember& member) {
18
if
constexpr
(std::is_lvalue_reference_v<TOwner> || std::is_lvalue_reference_v<TMember>) {
19
return
member;
20
}
else
{
21
return
std::move(member);
22
}
23
}
24
25
// Analogue of std::forward_like from c++23.
26
template
<
typename
TOwner,
typename
TMember>
27
USERVER_IMPL_NODEBUG
decltype
(
auto
) ForwardLike(
const
TMember& member) {
28
return
member;
29
}
30
31
}
// namespace utils
32
33
USERVER_NAMESPACE_END
userver
utils
forward_like.hpp
Generated on Thu May 21 2026 16:22:51 for userver by
Doxygen
1.13.2