SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
seqan3::detail::make_aligned_sequence_type< range_t > Struct Template Reference

A transformation trait that returns the correct aligned sequence type for a given sequence type. More...

#include <seqan3/alignment/matrix/detail/aligned_sequence_builder.hpp>

+ Inheritance diagram for seqan3::detail::make_aligned_sequence_type< range_t >:

Public Types

using type = lazy_conditional_t< is_class_template_declarable_with_v< gap_decorator, unaligned_sequence_type >, lazy< gap_decorator, unaligned_sequence_type >, lazy< std::vector, gapped< std::ranges::range_value_t< unaligned_sequence_type > > > >
 The resulting aligned sequence type.
 

Private Types

using unaligned_sequence_type = decltype(std::declval< range_t >()|views::type_reduce|views::slice(0, 1))
 The unaligned sequence type that will be used to assign a sequence to seqan3::assign_unaligned.
 

Detailed Description

template<std::ranges::viewable_range range_t>
struct seqan3::detail::make_aligned_sequence_type< range_t >

A transformation trait that returns the correct aligned sequence type for a given sequence type.

Template Parameters
range_tThe range type to be transformed.

This transformation trait helps to define the correct type representing the aligned sequence. The aligned sequence type is defined as follows:

Note some ranges cannot be decorated with the seqan3::gap_decorator, e.g. a non-random access range. In this case the fallback is to always use std::vector and copy the content from the passed range to the vector.


The documentation for this struct was generated from the following file:
Hide me