SeqAn3
3.4.0-rc.3
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
transfer_type_modifier_onto.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2
// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3
// SPDX-License-Identifier: BSD-3-Clause
4
10
#pragma once
11
12
#include <
type_traits
>
13
14
#include <
seqan3/core/platform.hpp
>
15
16
namespace
seqan3::detail
17
{
18
30
template
<
typename
source_t,
typename
target_t>
31
struct
transfer_type_modifier_onto
32
{
33
private
:
35
using
maybe_const_target_t =
std::conditional_t<std::is_const_v<std::remove_reference_t<source_t>
>
36
||
std::is_const_v<std::remove_reference_t<target_t>
>,
37
std::add_const_t<std::remove_cvref_t<target_t>
>,
38
std::remove_cvref_t<target_t>
>;
39
41
using
maybe_rvalue_reference_t =
42
std::conditional_t<std::is_rvalue_reference_v<source_t>
||
std::is_rvalue_reference_v<target_t>
,
43
std::add_rvalue_reference_t<maybe_const_target_t>
,
44
maybe_const_target_t>;
45
47
using
maybe_lvalue_reference_target_t =
48
std::conditional_t<std::is_lvalue_reference_v<source_t>
||
std::is_lvalue_reference_v<target_t>
,
49
std::add_lvalue_reference_t<maybe_rvalue_reference_t>
,
50
maybe_rvalue_reference_t>;
51
52
public
:
54
using
type = maybe_lvalue_reference_target_t;
55
};
56
64
template
<
typename
source_t,
typename
target_t>
65
using
transfer_type_modifier_onto_t =
typename
transfer_type_modifier_onto<source_t, target_t>::type;
66
67
}
// namespace seqan3::detail
std::add_const_t
std::add_rvalue_reference_t
std::conditional_t
platform.hpp
Provides platform and dependency checks.
std::tuple_size_v
T tuple_size_v
type_traits
Hide me
Version:
seqan3
core
detail
transfer_type_modifier_onto.hpp
Generated on Wed Apr 23 2025 13:22:40 for SeqAn3 by
1.9.8