Проблема в том, что вы не указываете пространство имен для поиска filtering_streambuf
, input
или gzip_decompressor
.Попробуйте:
#include <fstream>
#include <iostream>
#include <boost/iostreams/filtering_streambuf.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/gzip.hpp>
int main()
{
using namespace std;
using namespace boost::iostreams;
ifstream file("hello.gz", ios_base::in | ios_base::binary);
filtering_streambuf<input> in;
in.push(gzip_decompressor());
in.push(file);
copy(in, cout);
}
Причина, по которой пример не делает этого, заключается в соглашении, установленном во введении :
Все классы, функции и шаблоны, представленные в документации, находятся в пространстве имен boost :: iostreams, если не указано иное.Квалификация пространства имен обычно опускается.