Mover el constructor para std :: string de char *

Tengo una funcionf devolviendo unchar*. La documentación de la función dice:

The user must delete returned string

Quiero construir unstd::string de eso. Las cosas triviales que hacer es:

char* cstring = f();
std::string s(cstring);
delete cstring;

¿Es posible hacerlo mejor con las funciones de C ++? Me gustaría escribir algo como

std::string(cstring)

evitando la fuga.

Respuestas a la pregunta(4)

Su respuesta a la pregunta