Код: Выделить всё
#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
}
Код: Выделить всё
XКроме того, я не могу инициализировать std::array с двойными кавычками (поскольку это предположительно агрегат с одночленная переменная внутри него, C-массив, не будет ли двойная скобка работать?), хотя я могу сделать это с помощью класса X.
Как я могу сделать класс X ведет себя точно так же std::array относится к его инициализации с помощью одинарной фигурной скобки без использования явных аргументов шаблона?
Компилятор: gcc 14.2.1
Флаги: - std=c++23 -O2 -DNDEBUG`
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-stdarray
Мобильная версия