Исключение скобок в шаблоне структуры не работает как std::arrayC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Исключение скобок в шаблоне структуры не работает как std::array

Сообщение Anonymous »

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

#include 

template
struct X {T array[N];};

int main() {

using std::array;

array a{1,2,3};   //works
array c{{1,2,3}}; //works
array        b{1,2,3};   //works
array        d{{1,2,3}}; //doesn't work

X e{1,2,3};   //works
X f{{1,2,3}}; //works
X        g{1,2,3};   //doesn't work
X        h{{1,2,3}}; //works

}
Когда я создаю переменную std::array с помощью CTAD (без аргументов шаблона), кажется, что применяется исключение скобок (или это действительно исключение скобок?), но когда я сделайте то же самое с моим классом (), это не работает.
Кроме того, я не могу инициализировать std::array с двойными кавычками (поскольку это предположительно агрегат с одночленная переменная внутри него, C-массив, не будет ли двойная скобка работать?), хотя я могу сделать это с помощью класса X.
Как я могу сделать класс X ведет себя точно так же std::array относится к его инициализации с помощью одинарной фигурной скобки без использования явных аргументов шаблона?
Компилятор: gcc 14.2.1

Флаги: - std=c++23 -O2 -DNDEBUG`

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-stdarray
Ответить

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

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

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

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

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