mrs_lib
Various reusable classes, functions and utilities for use in MRS projects
Loading...
Searching...
No Matches
immediate_awaitable.hpp
1
#ifndef MRS_LIB_CORO_INTERNAL_IMMEDIATE_AWAITABLE_HPP_
2
#define MRS_LIB_CORO_INTERNAL_IMMEDIATE_AWAITABLE_HPP_
3
4
5
#include <utility>
6
7
8
namespace
mrs_lib::coro::internal
9
{
10
14
template
<
typename
Awaiter>
15
class
[[nodiscard(
"The result must be awaited, otherwise, it may do NOTHING!!!"
)]]
ImmediateAwaitable
16
{
17
18
public
:
19
ImmediateAwaitable
()
20
requires
std::default_initializable<Awaiter>
21
=
default
;
22
ImmediateAwaitable
(Awaiter awaiter) : awaiter_(std::move(awaiter))
23
{
24
}
25
26
~ImmediateAwaitable
() =
default
;
27
28
ImmediateAwaitable
(
const
ImmediateAwaitable
&) =
delete
;
29
ImmediateAwaitable
(
ImmediateAwaitable
&&) =
delete
;
30
ImmediateAwaitable
& operator=(
const
ImmediateAwaitable
&) =
delete
;
31
ImmediateAwaitable
& operator=(
ImmediateAwaitable
&&) =
delete
;
32
33
friend
Awaiter
operator
co_await
(
ImmediateAwaitable
awaitable)
34
{
35
return
std::move(awaitable).awaiter_;
36
}
37
38
private
:
39
Awaiter awaiter_{};
40
};
41
42
}
// namespace mrs_lib::coro::internal
43
44
45
#endif
// MRS_LIB_CORO_INTERNAL_IMMEDIATE_AWAITABLE_HPP_
mrs_lib::coro::internal::ImmediateAwaitable
Helper class to force awaiting a result in the current expression.
Definition
immediate_awaitable.hpp:16
include
mrs_lib
coro
internal
immediate_awaitable.hpp
Generated by
1.9.8