Hello,

I'm using the container_device class provided in the documentation. I'm creating my stream and device like so:

typedef boost::iostreams::stream<
  container_device<std::vector<boost::uint8_t > >
  > ByteStream;

  ByteStream stream;
  stream << "Hello";

This compiles fine, however when I run this code I get an assertion deep inside of the << operator, which is in the std namespace. I thought that boost::iostreams would have its own global << and >> operators? I was expecting the << operator to directly call my device's write() method, but it doesn't. Perhaps I just don't understand how this works. I'm trying to write out binary data. The string should translate to a series of bytes in the container.

The assertion I'm hitting is in optional.hpp in Boost. I'm using MSVC9 as my compiler:

    T& operator*() 
    { 
        assert(initialized_);
        return *static_cast<T*>(address()); 
    }

Above contains the code snippet where the assertion is happening. I have no idea what this assert means. Below is my callstack:

> VFDTester.exe!boost::iostreams::detail::optional<boost::iostreams::detail::concept_adapter<container_device<std::vector<unsigned char,std::allocator<unsigned char> > > > >::operator*()  Line 55 + 0x1f bytes C++
  VFDTester.exe!boost::iostreams::detail::indirect_streambuf<container_device<std::vector<unsigned char,std::allocator<unsigned char> > >,std::char_traits<unsigned char>,std::allocator<unsigned char>,boost::iostreams::seekable>::obj()  Line 104 + 0x19 bytes C++
  VFDTester.exe!boost::iostreams::detail::indirect_streambuf<container_device<std::vector<unsigned char,std::allocator<unsigned char> > >,std::char_traits<unsigned char>,std::allocator<unsigned char>,boost::iostreams::seekable>::overflow(long c=72)  Line 301 + 0x15 bytes C++
  VFDTester.exe!std::basic_streambuf<unsigned char,std::char_traits<unsigned char> >::sputc(unsigned char _Ch='H')  Line 163 + 0x4c bytes C++
  VFDTester.exe!std::operator<<<unsigned char,std::char_traits<unsigned char> >(std::basic_ostream<unsigned char,std::char_traits<unsigned char> > & _Ostr={...}, const char * _Val=0x0074a7b0)  Line 679 + 0x32 bytes C++
  VFDTester.exe!MainFrame::OnConnectPressed(wxCommandEvent & event={...})  Line 82 + 0x36 bytes C++









---------
Robert Dailey