Skip to content
rrahn edited this page Mar 11, 2018 · 2 revisions

TODO

  • virtual_stream
  • zip_stream
  • bzip_stream
  • bgzf_stream

Concepts

istream_concept

template <typename stream_type, typename value_type>
concept bool istream_concept = std::is_base_of_v<std::ios_base, stream_type> &&
                               requires (stream_type & os, value_type & val)
{
    typename stream_type::char_type;
    typename stream_type::traits_type;
    typename stream_type::int_type;
    typename stream_type::pos_type;
    typename stream_type::off_type;

    { os >> val } -> std::basic_istream<typename stream_type::char_type, typename stream_type::traits_type> &;
};

ostream_concept

template <typename stream_type, typename value_type>
concept bool ostream_concept = std::is_base_of_v<std::ios_base, stream_type> &&
                               requires (stream_type & os, value_type & val)
{
    typename stream_type::char_type;
    typename stream_type::traits_type;
    typename stream_type::int_type;
    typename stream_type::pos_type;
    typename stream_type::off_type;

    { os << val } -> std::basic_ostream<typename stream_type::char_type, typename stream_type::traits_type> &;
};

stream_concept

template <typename stream_type, typename value_type>
concept bool stream_concept = istream_concept<std::ios_base, stream_type> &&
                              ostream_concept<std::ios_base, stream_type>
{}
Clone this wiki locally