С++20 constinit и std::stringC++

Программы на C++. Форум разработчиков
Anonymous
 С++20 constinit и std::string

Сообщение Anonymous »

У меня есть небольшой запрос, на который я не смог найти удовлетворительного ответа.
В cppreference упоминается, что если инициализация содержит часть динамической инициализации, программа будет неправильно сформирована при использовании constinit в C++20.
Мне просто интересно, почему тогда компилируется следующий код:

Код: Выделить всё

constinit std::string str = "Hello";
Поскольку класс std::string предполагает динамическое выделение памяти для хранения символов, это кажется противоречивым. Разве это не должно быть запрещено из-за динамической части?
Пожалуйста, дайте какие-нибудь рекомендации по этому поводу?
Заранее спасибо!Пытался скомпилировать с флагами -std=C++20, программа компилируется нормально, чего быть не должно.

Подробнее здесь: https://stackoverflow.com/questions/790 ... -stdstring

Вернуться в «C++»