ОК, мне удалось это сделать
boost::beast::http::response<boost::beast::http::string_body> string_response;
boost::beast::http::response<boost::beast::http::buffer_body> buffer_response;
std::string response_body
// Do stuff to read the response and fill the response_body using the buffer
string_response.base() = buffer_response.base();
string_response.body() = response_body;
Оказалось, что в заголовке есть конструктор копирования, поэтому все, что мне нужно было сделать, это назначить тело строки ..
Итакесли конструктор копирования эффективен (скорее всего, так и есть), это решение также эффективно.