17#ifndef TOOLBOX_UTIL_STREAM_HPP
18#define TOOLBOX_UTIL_STREAM_HPP
23#include <experimental/iterator>
26inline namespace util {
40template <std::
size_t MaxN>
48 char* begin =
static_cast<char*
>(storage_.get());
70 setp(
nullptr,
nullptr);
79 char* begin =
static_cast<char*
>(storage_.get());
90 auto*
const begin =
static_cast<char*
>(storage_.get());
93 setp(
nullptr,
nullptr);
100template <std::
size_t MaxN>
105 : std::ostream{
nullptr}
135 buf_.set_storage(std::move(
storage));
149template <std::
size_t MaxN>
175template <std::
size_t MaxN>
210template <
class StreamT>
243 const char* delim_{
nullptr};
252 (..., [&os](
const auto& arg) { os <<
DelimT << arg; }(args));
259template <
typename ValueT>
260ostream_joiner<char>& operator<<(ostream_joiner<char>& osj,
const ValueT& value)