
Jonathan Turkanis wrote:
My recollection is that all the is_open() functions should be const, so I'm inclined to change [in]direct_streambuf. Could you give me an example of something that won't currently compile, but should?
For example this: ----- test.cpp #include <boost/iostreams/stream.hpp> namespace io = boost::iostreams; class empty_source { public: typedef char char_type; typedef io::source_tag category; empty_source(int) {} std::streamsize read(char* s, std::streamsize n) { return -1; } }; int main() { io::stream<empty_source> s(0); s.is_open(); } ----- test.cpp On Vc7.1 it produces the error: c:\lib\Boost\include\boost-1_33\boost\iostreams\stream.hpp(113) : error C2662: 'boost::iostreams::detail::indirect_streambuf<T,Tr,Alloc,Mode>::is_open' : cannot convert 'this' pointer from 'const boost::iostreams::stream_buffer<T,Tr,Alloc>' to 'boost::iostreams::detail::indirect_streambuf<T,Tr,Alloc,Mode> &' If you change the category to: struct category : io::source_tag, io::direct_tag {}; you'll get the same problem for direct_streambuf. HTH, Ganesh