@@ -200,16 +200,18 @@ struct default_printer :
200200 cigar_printer, // type seqan3::cigar
201201 // NOTE: alphabet_printer needs the integral_printer overload, otherwise it might have infinite recursion due to
202202 // char and uint being an alphabet
203- alphabet_printer, // concept seqan3::alphabet
204- sam_flag_printer, // type seqan3::sam_flag
205- simd_printer, // concept simd::simd_concept<>
206- dynamic_bitset_printer, // type seqan3::dynamic_bitset<>
203+ alphabet_printer, // concept seqan3::alphabet
204+ sam_flag_printer, // type seqan3::sam_flag
205+ simd_printer, // concept simd::simd_concept<>
206+ dynamic_bitset_printer, // type seqan3::dynamic_bitset<>
207+ // NOTE: In C++26, std::optional<T> is a view (and hence models std::ranges::input_range<>).
208+ // So it needs to have priority over char_sequence_printer, integer_sequence_printer, and input_range_printer.
209+ optional_printer, // type std::optional<> or std::nullopt_t
207210 char_sequence_printer, // concept std::range::input_range<> with char value_type
208211 integer_sequence_printer, // concept std::range::input_range<> with std::integral value_type
209212 sequence_printer, // concept seqan3::sequence<>, i.e. std::range::input_range<> with seqan3::alphabet value_type
210213 input_range_printer, // concept std::range::input_range<>
211214 strong_type_printer, // concept seqan3::detail::derived_from_strong_type<>
212- optional_printer, // type std::optional<> or std::nullopt_t
213215 enumeration_printer, // types for which seqan3::enumeration_names is overloaded
214216 tuple_printer, // concept seqan3::tuple_like<>
215217 std_byte_printer, // type std::byte
0 commit comments