Есть следующий код:
void f(char const* str) {...}
void g()
{
char const* p = "xyz";
string s;
if (abc)
{
s = "abc";
p = s.c_str();
}
f(p);
}
Переменная 's' должна жить для того, чтобы указатель 'p' был валидным.
Решарпер предлагает объединить создание переменной 's' с инициализаций, что соответственно приведёт к тому, что код перестанет работать.
Возможно ли улучшить анализ кода, и не предлагать такого ?
Для начала хотя бы для std::basic_string.c_str.