Rozważmy następujący kod:Zwracanie łańcucha C w funkcji constexpr: dlaczego nie ma ostrzeżenia od kompilatora?
constexpr auto f()
{
auto str = "Hello World!";
return str;
}
int main(int argc, char* argv[])
{
static constexpr auto str = f();
std::cout << str << std::endl;
return 0;
}
Czy to normalne, że mój kompilator nie wyświetla żadnego ostrzeżenia? Czy jest to określone zachowanie? Czy mam gwarancję, że program wyświetli "Hello World!"
? Spodziewam się, że "Hello World!"
nie będzie żyć poza zakresem funkcji ...
"Literały ciągów mają typ" const char * "" Nie robią tego. –
@ T.C. tablica 'const char' o konkretnej długości? – Orient
@ T.C. Rzeczywiście, dziękuję. – lisyarus