SeqAn3
3.4.0
The Modern C++ library for sequence analysis.
Toggle main menu visibility
Loading...
Searching...
No Matches
utility/concept.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2006-2025 Knut Reinert & Freie Universität Berlin
2
// SPDX-FileCopyrightText: 2016-2025 Knut Reinert & MPI für molekulare Genetik
3
// SPDX-License-Identifier: BSD-3-Clause
4
9
10
#pragma once
11
12
#include <concepts>
13
#include <type_traits>
14
15
#include <
seqan3/core/platform.hpp
>
16
22
23
namespace
seqan3
24
{
36
template
<
typename
from,
typename
to>
37
concept
implicitly_convertible_to
=
std::is_convertible_v<from, to>
;
39
51
template
<
typename
from,
typename
to>
52
concept
explicitly_convertible_to
=
requires
{
static_cast<
to
>
(
std::declval<from>
()); };
54
66
template
<
typename
t>
67
concept
arithmetic
=
std::is_arithmetic_v<t>
;
69
81
82
template
<
typename
t>
83
concept
builtin_character
= std::integral<t>
84
&& (std::same_as<t, char> || std::same_as<t, unsigned char> || std::same_as<t, signed char> ||
85
#ifdef __cpp_char8_t
86
std::same_as<t, char8_t> ||
87
#endif
88
std::same_as<t, char16_t> || std::same_as<t, char32_t> || std::same_as<t, wchar_t>);
90
103
template
<
typename
t>
104
concept
trivially_destructible
= std::destructible<t> &&
std::is_trivially_destructible_v<t>
;
106
119
template
<
typename
t>
120
concept
trivially_copyable
= std::copyable<t> &&
std::is_trivially_copyable_v<t>
;
122
136
template
<
typename
t>
137
concept
trivial
=
trivially_copyable<t>
&&
trivially_destructible<t>
&&
std::is_trivially_default_constructible_v<t>
;
139
151
template
<
typename
t>
152
concept
standard_layout
=
std::is_standard_layout_v<t>
;
154
169
template
<
typename
t,
typename
u>
170
concept
weakly_assignable_from
=
std::is_assignable_v<t, u>
;
172
}
// namespace seqan3
std::declval
T declval(T... args)
arithmetic
A type that satisfies std::is_arithmetic_v<t>.
builtin_character
This concept encompasses exactly the types char, signed char, unsigned char, wchar_t,...
explicitly_convertible_to
Checks whether from can be explicitly converted to to.
implicitly_convertible_to
Checks whether from can be implicityly converted to to.
standard_layout
Resolves to std::is_standard_layout_v<t>.
trivial
A type that satisfies seqan3::trivially_copyable and seqan3::trivially_destructible.
trivially_copyable
A type that satisfies std::is_trivially_copyable_v<t>.
trivially_destructible
A type that satisfies std::is_trivially_destructible_v<t>.
weakly_assignable_from
Resolves to std::is_assignable_v<t>.
std::is_arithmetic_v
T is_arithmetic_v
std::is_assignable_v
T is_assignable_v
std::is_convertible_v
T is_convertible_v
std::is_trivially_default_constructible_v
T is_trivially_default_constructible_v
std::is_trivially_destructible_v
T is_trivially_destructible_v
std::is_standard_layout_v
T is_standard_layout_v
std::is_trivially_copyable_v
T is_trivially_copyable_v
seqan3
The main SeqAn3 namespace.
Definition
aligned_sequence_concept.hpp:26
platform.hpp
Provides platform and dependency checks.
Hide me
Version:
seqan3
utility
concept.hpp
Generated on
for SeqAn3 by
1.17.0