Boost logo

Boost :

From: Alberto Ganesh Barbati (abarbati_at_[hidden])
Date: 2005-11-02 17:44:36

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
  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);
----- test.cpp

On Vc7.1 it produces the error:

c:\lib\Boost\include\boost-1_33\boost\iostreams\stream.hpp(113) : error
: 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.



Boost list run by bdawes at, gregod at, cpdaniel at, john at