19 namespace seqan3::detail
33 template <
typename source_t,
typename target_t>
34 struct transfer_type_modifier_onto
38 using maybe_const_target_t = std::conditional_t<std::is_const_v<std::remove_reference_t<source_t>> ||
39 std::is_const_v<std::remove_reference_t<target_t>>,
40 std::add_const_t<std::remove_cvref_t<target_t>>,
44 using maybe_rvalue_reference_t = std::conditional_t<std::is_rvalue_reference_v<source_t> ||
45 std::is_rvalue_reference_v<target_t>,
46 std::add_rvalue_reference_t<maybe_const_target_t>,
47 maybe_const_target_t>;
50 using maybe_lvalue_reference_target_t = std::conditional_t<std::is_lvalue_reference_v<source_t> ||
51 std::is_lvalue_reference_v<target_t>,
52 std::add_lvalue_reference_t<maybe_rvalue_reference_t>,
53 maybe_rvalue_reference_t>;
57 using type = maybe_lvalue_reference_target_t;
67 template <
typename source_t,
typename target_t>
68 using transfer_type_modifier_onto_t =
typename transfer_type_modifier_onto<source_t, target_t>::type;
typename remove_cvref< t >::type remove_cvref_t
Return the input type with const, volatile and references removed (transformation_trait shortcut).
Definition: type_traits:54
Provides C++20 additions to the type_traits header.