Почему я могу определить экземпляр std::string, который является константным? Разве constinit не запрещен, если объект тC++

Программы на C++. Форум разработчиков
Anonymous
 Почему я могу определить экземпляр std::string, который является константным? Разве constinit не запрещен, если объект т

Сообщение Anonymous »

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

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

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

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

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