SeqAn3
3.0.1
The Modern C++ library for sequence analysis.
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
concept.hpp
Go to the documentation of this file.
1
// -----------------------------------------------------------------------------------------------------
2
// Copyright (c) 2006-2020, Knut Reinert & Freie Universität Berlin
3
// Copyright (c) 2016-2020, Knut Reinert & MPI für molekulare Genetik
4
// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5
// shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6
// -----------------------------------------------------------------------------------------------------
7
13
#pragma once
14
15
#include <
functional
>
16
#include <type_traits>
17
18
#include <meta/meta.hpp>
19
20
#include <
seqan3/core/type_traits/template_inspection.hpp
>
21
#include <
seqan3/std/concepts
>
22
23
namespace
seqan3
24
{
26
// Forward declarations
27
template
<
typename
derived_t,
typename
value_t>
28
struct
pipeable_config_element;
30
}
31
32
namespace
seqan3::detail
33
{
34
35
// ----------------------------------------------------------------------------
36
// Concept config_element
37
// ----------------------------------------------------------------------------
38
40
template
<
typename
derived_t>
41
class
config_element_base;
43
63
template
<
typename
config_t>
66
SEQAN3_CONCEPT config_element =
std::semiregular<std::remove_reference_t<config_t>
> &&
67
requires (config_t c)
68
{
69
{
std::remove_reference_t<config_t>::id
};
70
{ c.value };
71
// Must inherit from the pipeable_config_element class.
72
requires
std::is_base_of_v
<pipeable_config_element<config_t, decltype(c.value)>, config_t>;
73
};
75
}
// namespace seqan3::detail
semiregular
Subsumes std::copyable and std::default_constructible.
functional
template_inspection.hpp
Provides seqan3::type_list and auxiliary type traits.
concepts
The Concepts library.
seqan3
The main SeqAn3 namespace.
Definition:
aligned_sequence_concept.hpp:36
std::remove_reference_t
std::is_base_of_v
T is_base_of_v
seqan3
core
algorithm
concept.hpp
Generated on Tue Feb 18 2020 09:33:17 for SeqAn3 by
1.8.16