SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
optional.hpp
Go to the documentation of this file.
1// -----------------------------------------------------------------------------------------------------
2// Copyright (c) 2006-2021, Knut Reinert & Freie Universität Berlin
3// Copyright (c) 2016-2021, Knut Reinert & MPI für molekulare Genetik
4// This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5// shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6// -----------------------------------------------------------------------------------------------------
7
13#pragma once
14
15#include <optional>
16
20
21namespace seqan3
22{
32template <typename char_t>
34{
35 s << "<VALUELESS_OPTIONAL>";
36 return s;
37}
38
45template <typename char_t, typename optional_type>
47 requires detail::is_type_specialisation_of_v<std::remove_cvref_t<optional_type>, std::optional>
49inline debug_stream_type<char_t> & operator<<(debug_stream_type<char_t> & s, optional_type && arg)
50{
51 if (arg.has_value())
52 s << *arg;
53 else
54 s << "<VALUELESS_OPTIONAL>";
55 return s;
56}
57
59
60} // namespace seqan3
Provides various type traits on generic types.
A "pretty printer" for most SeqAn data structures and related types.
Definition: debug_stream_type.hpp:78
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 main SeqAn3 namespace.
Definition: cigar_operation_table.hpp:2
Provides type traits for working with templates.