Является ли следующий код С++ корректным:
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++.