Iros
Loading...
Searching...
No Matches
relocate.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
di/meta/operations.h
"
4
#include "
di/util/addressof.h
"
5
#include "
di/util/destroy_at.h
"
6
#include "
di/util/move.h
"
7
8
namespace
di::util
{
9
namespace
detail
{
10
struct
RelocateFunction
{
11
template
<concepts::Destructible T>
12
requires
(
concepts::MoveConstructible<T>
)
13
constexpr
auto
operator
()(T& reference)
const
-> T {
14
auto
result = util::move(reference);
15
destroy_at
(util::addressof(reference));
16
return
result;
17
}
18
};
19
}
20
21
constexpr
inline
auto
relocate
=
detail::RelocateFunction
{};
22
}
23
24
namespace
di
{
25
using
util::relocate
;
26
}
addressof.h
di::concepts::MoveConstructible
Definition
operations.h:43
destroy_at.h
operations.h
di::util::detail
Definition
clamp.h:9
di::util
Definition
vocab.h:96
di::util::relocate
constexpr auto relocate
Definition
relocate.h:21
di::util::destroy_at
constexpr auto destroy_at
Definition
destroy_at.h:24
di
Definition
zstring_parser.h:9
di::util::detail::RelocateFunction
Definition
relocate.h:10
move.h
libs
di
include
di
util
relocate.h
Generated by
1.13.0