/* Copyright 2021-2022 Glen Joseph Fernandes (glenjofe@gmail.com) Distributed under the Boost Software License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_IO_NULLSTREAM_HPP #define BOOST_IO_NULLSTREAM_HPP #include #include #include namespace boost { namespace io { template > class basic_nullbuf : public std::basic_streambuf { protected: typename Traits::int_type overflow(typename Traits::int_type c) BOOST_OVERRIDE { return Traits::not_eof(c); } std::streamsize xsputn(const CharT*, std::streamsize n) BOOST_OVERRIDE { return n; } }; namespace detail { template class nullbuf { public: boost::io::basic_nullbuf* buf() { return &buf_; } private: boost::io::basic_nullbuf buf_; }; } /* detail */ template > class basic_onullstream : detail::nullbuf , public std::basic_ostream { public: basic_onullstream() : std::basic_ostream(detail::nullbuf::buf()) { } }; typedef basic_onullstream onullstream; typedef basic_onullstream wonullstream; } /* io */ } /* boost */ #endif