stringstream-> rdbuf () -> pubsetbuf no está configurando el búfer

Estoy tratando de modificar un stringbuffer de un objeto de cadena de caracteres sin tener que copiar una cadena, usando el método pubsetbuf, pero no funciona. Estoy siguiendo la documentación enhttp://www.cplusplus.com/reference/iostream/streambuf/pubsetbuf/. Aquí está mi código de ejemplo:

#include <iostream>
#include <sstream>

int main(int argc, char* argv[])
{
    std::stringstream stream("You say goodbye");
    char replace[] = {"And I say hello"};
    std::cout << stream.str() << std::endl; // Checking original contents
    stream.rdbuf()->pubsetbuf(replace, 16); // Should set contents here
    std::cout << stream.str() << std::endl; // But don't :(
    return 0;
}

Y la salida es:

You say goodbye
You say goodbye

Sé que puedo usar stream.str (reemplazar), pero este método copia el valor de 'reemplazar', y no quiero hacer una copia.

¿Qué me estoy perdiendo?

Actualización: estoy usando VS2010

Respuestas a la pregunta(1)

Su respuesta a la pregunta