`std::span` и статическое хранилище для инициализаторов в фигурных скобках (P2752R3)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 `std::span` и статическое хранилище для инициализаторов в фигурных скобках (P2752R3)

Сообщение Anonymous »

Я пытаюсь скомпилировать следующий код с помощью GCC 15 (с поддержкой C++26):

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

constexpr std::span s = {0,0};
Однако возникает следующая ошибка компилятора:

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

span.cpp:7:48: error: ‘std::span{((const int*)(&)), std::__detail::__extent_storage{2}}’ is not a constant expression
7 |         constexpr std::span s = {0,0};
|                                                ^
span.cpp:7:48: error: ‘std::span(std::initializer_list{((const int*)(& const int [2]{0, 0})), 2})’ is not a constant expression because it refers to an incompletely initialized variable
Что мне здесь не понятно, так это следующее. Предложение P2752R3 было включено в C++26 и реализовано в GCC 14. Насколько я понимаю, {0,0} вполне подходит для хранения в статической памяти согласно P2752R3. Не так ли?

Подробнее здесь: https://stackoverflow.com/questions/798 ... rs-p2752r3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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