15 #include <type_traits>
19 namespace seqan3::detail
33 template <
typename source_t,
typename target_t>
34 struct transfer_type_modifier_onto
39 || std::is_const_v<std::remove_reference_t<target_t>>,
41 std::remove_cvref_t<target_t>>;
44 using maybe_rvalue_reference_t =
47 maybe_const_target_t>;
50 using maybe_lvalue_reference_target_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;