boost gzip descomprimir conjunto de bytes

I implementé la descompresión de archivos gzip / zlib como se muestra en sus ejemplos en el sitio de impulso.

void CompressionUtils::Inflate(std::ifstream& inputFile,
                               std::ofstream& outputFile)
{
   boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
   in.push(boost::iostreams::gzip_decompressor());
   in.push(inputFile);
   boost::iostreams::copy(in, outputFile);
}

Esto funciona bien. También estoy leyendo datos de un socket que obtengo de un servicio JSON basado en reposo que también está comprimido. Pensé que escribiría una implementación basada en memoria, lo difícil que podría ser. Bueno, descubrí que no entiendo las transmisiones y las memorias intermedias de transmisiones como debería. Culpo a los últimos años en Java;) .. Así que comencé por este camino.

void CompressionUtils::Inflate(char* compressed, 
                               int size,
                               char* decompressed)
{

   boost::iostreams::stream<boost::iostreams::array_source> source(compressed,size);
   //std::stringstream str;

   boost::iostreams::filtering_streambuf<boost::iostreams::input> in;
   in.push(boost::iostreams::gzip_decompressor());
   in.push(source);
   //boost::iostreams::copy(in, str);   
}

Pero estoy perdido en cuanto a qué tipo de transmisión puedo usar para básicamente descomprimirchar* representación de la secuencia descomprimida. Esto debería ser fácil, y probablemente lo sea, pero he estado desperdiciando las últimas dos horas con intentos fallidos.

Respuestas a la pregunta(2)

Su respuesta a la pregunta