29 namespace seqan3::detail
33 template <
typename char_t,
typename tuple_t, std::size_t ...I>
38 ((s << (I == 0 ?
"" :
",") << get<I>(t)), ...);
53 template <
typename tuple_t>
54 SEQAN3_CONCEPT debug_streamable_tuple = !std::ranges::input_range<tuple_t> &&
69 template <
typename char_t,
typename tuple_t>
71 requires (detail::debug_streamable_tuple<tuple_t>)
73 inline debug_stream_type<char_t> &
operator<<(debug_stream_type<char_t> & s, tuple_t && t)
75 detail::print_tuple(s, std::forward<tuple_t>(t),
Core alphabet concept and free function/type trait wrappers.
A "pretty printer" for most SeqAn data structures and related types.
Definition: debug_stream_type.hpp:76
Provides seqan3::debug_stream and related types.
debug_stream_type< char_t > & operator<<(debug_stream_type< char_t > &stream, alignment_t &&alignment)
Stream operator for alignments, which are represented as tuples of aligned sequences.
Definition: debug_stream_alignment.hpp:101
The generic alphabet concept that covers most data types used in ranges.
Whether a type behaves like a tuple.
The main SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
constexpr auto const & get(configuration< configs_t... > const &config) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: configuration.hpp:429
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
Adaptations of concepts from the Ranges TS.
Provides seqan3::tuple_like.