30 template <
typename list_t,
template <
typename...>
typename output_t>
31 struct variant_from_tags;
35 template <
template <
typename...>
typename output_t,
typename ...ts>
36 struct variant_from_tags<meta::list<ts...>, output_t>
48 template <std::OutputIterator<
char> it_t>
49 constexpr
void write_eol(it_t & it,
bool const add_cr)
67 template <
typename format_variant_type>
68 void set_format(format_variant_type & format,
71 using valid_formats = detail::transfer_template_args_onto_t<format_variant_type, type_list>;
73 bool format_found =
false;
75 if (extension.
size() > 1)
77 extension = extension.
substr(1);
78 meta::for_each(valid_formats{}, [&] (
auto && fmt)
80 using fmt_type = remove_cvref_t<decltype(fmt)>;
81 using fmt_tag =
typename fmt_type::format_tag;
83 for (
auto const & ext : fmt_tag::file_extensions)
96 throw unhandled_extension_error(
"No valid format found for this extension.");
::ranges::equal equal
Alias for ranges::equal. Determines if two sets of elements are the same.
Definition: algorithm:54
Provides exceptions used in the I/O module.
Provides C++20 additions to the <iterator> header.
Provides seqan3::type_list and auxiliary type traits.
Provides seqan3::type_list and auxiliary type traits.
Definition: aligned_sequence_concept.hpp:35
Adaptations of algorithms from the Ranges TS.
This header includes C++17 filesystem support and imports it into namespace seqan3::filesystem (indep...