Le code C++ suivant est-il bien formé :
void consumer(char const* p)
{
std::printf("%s", p);
}
std::string random_string_generator()
{
// returns a random std::string object
}
consumer(random_string_generator().c_str());
Le problème que j'ai avec cela est qu'après avoir créé l'objet std::string temporaire et pris le pointeur c_str(), rien n'empêche l'objet std::string d'être détruit (ou peut-être que je me trompe ?). Pouvez-vous s'il vous plaît m'indiquer la norme, si le code est OK malgré tout. Cela fonctionne, quand je teste avec g++.