Правильно ли сформирован следующий код C++:
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());
У меня проблема в том, что после создания временного объекта std::string и получения указателя c_str() ничто не препятствует уничтожению объекта std::string (или, может быть, я ошибаюсь?). Не могли бы вы указать мне стандарт, если код в порядке, несмотря ни на что. Это работает, когда я тестирую g++.