"ScL Feature"
/
ScL Feature
0.0.1
C++20 composable proxy wrapper with pluggable executor strategy
Toggle main menu visibility
Loading...
Searching...
No Matches
wrapper_cast.h
1
#pragma once
2
3
#ifndef DOXYGEN
4
5
#include <scl/feature/concepts/wrapper.h>
6
#include <scl/feature/detail/wrapper_cast.h>
7
8
#include <utility>
9
10
namespace
scl
11
{
12
template
<
typename
Refer>
13
using
wrapper_caster
= ::scl::feature::detail::wrapper_caster<Refer>;
14
15
template
<
typename
Type>
16
[[nodiscard]]
17
constexpr
decltype
(
auto
)
wrapper_cast
(Type && w)
noexcept
18
{
19
return ::scl::wrapper_caster<Type &&>{::std::forward<Type>(w)};
20
}
21
22
}
// namespace scl
23
24
#else
// DOXYGEN
25
26
namespace
scl
27
{
31
58
template
<
typename
Refer>
59
class
[[nodiscard]] wrapper_caster
60
{
61
public
:
62
wrapper_caster(wrapper_caster &&) =
delete
;
63
wrapper_caster(wrapper_caster
const
&) =
delete
;
64
wrapper_caster & operator=(wrapper_caster &&) =
delete
;
65
wrapper_caster & operator=(wrapper_caster
const
&) =
delete
;
66
73
explicit
wrapper_caster
(Refer ref);
74
82
~wrapper_caster
();
83
96
[[nodiscard]]
97
operator
Refer() &&;
98
109
template
<
typename
T>
110
[[nodiscard]]
111
T
to
() &&
112
requires ::scl::feature::concepts::convertible_from<T, Refer>;
113
};
114
127
template
<
typename
Wrapper>
128
[[nodiscard]]
129
constexpr
decltype
(
auto
)
wrapper_cast
(Wrapper && w);
130
141
template
<
typename
Value>
142
[[nodiscard]]
143
constexpr
decltype
(
auto
)
wrapper_cast
(Value && v)
noexcept
;
144
// end of group scl_feature_wrapper_cast
146
}
// namespace scl
147
148
#endif
// DOXYGEN
scl::wrapper_caster
Lazy-locking cast proxy for a wrapper or plain value reference.
Definition
wrapper_cast.h:60
scl::wrapper_caster::~wrapper_caster
~wrapper_caster()
Releases all guards acquired during conversion.
scl::wrapper_caster::to
T to() &&
Acquires the guards needed to reach T and returns the value.
scl::wrapper_caster::wrapper_caster
wrapper_caster(Refer ref)
Constructs the proxy, capturing references to every executor in the wrapper chain via an internal val...
scl::wrapper_cast
constexpr decltype(auto) wrapper_cast(Wrapper &&w)
Returns a lazy-locking cast proxy for a wrapper reference.
scl
Root namespace of the ScL project.
src
scl
feature
wrapper_cast.h
Generated by
1.18.0