`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

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