mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
SequenceOps.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <utility>
6
7
namespace
mini_llvm
{
8
9
namespace
detail {
10
11
template
<
typename
S>
12
concept
Addable =
requires
(S &sequence) {
13
sequence.push_back(std::declval<typename S::value_type>());
14
};
15
16
template
<
typename
S>
17
requires
Addable<S>
18
void
add(S &sequence,
typename
S::value_type value) {
19
sequence.push_back(std::move(value));
20
}
21
22
}
// namespace detail
23
24
namespace
sequence_ops
{
25
26
template
<
typename
S>
27
requires
detail::Addable<S>
28
S &
operator+=
(S &sequence,
typename
S::value_type value) {
29
detail::add(sequence, std::move(value));
30
return
sequence;
31
}
32
33
template
<
typename
S>
34
requires
detail::Addable<S>
35
S
operator+=
(S &&sequence,
typename
S::value_type value) {
36
detail::add(sequence, std::move(value));
37
return
std::move(sequence);
38
}
39
40
template
<
typename
S>
41
requires
detail::Addable<S>
42
S &
operator,
(S &sequence,
typename
S::value_type value) {
43
return
sequence += std::move(value);
44
}
45
46
template
<
typename
S>
47
requires
detail::Addable<S>
48
S
operator,
(S &&sequence,
typename
S::value_type value) {
49
return
std::move(sequence) += std::move(value);
50
}
51
52
template
<
typename
S>
53
requires
detail::Addable<S>
54
S
operator+
(S sequence,
typename
S::value_type value) {
55
return
std::move(sequence) += std::move(value);
56
}
57
58
}
// namespace sequence_ops
59
60
}
// namespace mini_llvm
mini_llvm::sequence_ops
Definition
SequenceOps.h:24
mini_llvm::sequence_ops::operator+=
S & operator+=(S &sequence, typename S::value_type value)
Definition
SequenceOps.h:28
mini_llvm::sequence_ops::operator,
S & operator,(S &sequence, typename S::value_type value)
Definition
SequenceOps.h:42
mini_llvm::sequence_ops::operator+
S operator+(S sequence, typename S::value_type value)
Definition
SequenceOps.h:54
mini_llvm
Definition
GraphColoringAllocator.h:13
include
mini-llvm
utils
SequenceOps.h
Generated by
1.17.0