Я пытался использовать поток на основе массива и хотел передать поток на std::ostream_iterator
или std::istream_iterator
, но, к сожалению, я получаю ошибку компиляции с gcc 4.3.5.
Документация
Boost :: IOStreams гласит, что io::stream
является либо производным от std::basic_istream
или std::basic_ostream
, либо от обоих (std::basic_iostream
) в зависимости от базовой категории устройства. Устройство массива имеет категорию для поиска, поэтому я ожидаю, что io :: stream будет производным от std::basic_iostream
и будет совместимо с std::ostream_iterator
или std::istream_iterator
. Но я к сожалению получаю ошибку компиляции.
Вот фрагмент кода:
namespace io=boost::io;
typedef unsigned char byte;
typedef io::basic_array<byte> array_device;
typedef io::stream<array_device> array_stream;
byte my_buffer[256]={};
array_stream ios_(my_buffer);
std::istream_iterator<byte> in(ios_);
И последняя строка приводит к ошибке с указанием:
src/my_file.cpp: In member function 'void my_test_class::ctor::test_method()':
src/my_file.cpp:86: error: no matching function for call to
'std::istream_iterator<unsigned char, char, std::char_traits<char>, int>::istream_iterator(my_test_class::<unnamed>::array_stream&)'