Инициализировать массив внутри класса шаблона с переменным числом вариантовC++

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

Сообщение Anonymous »

Я не могу разобраться с вариационными шаблонами. Я хочу сделать очень простую вещь

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

Tuple t{1,2,3};
должен создать кортеж размера 3, содержащий массив {1,2,3} ( t.data = {1,2,3})

Это означает, что он должен сделать 2 вещи:
  • Создать кортеж размера 3 ( Tuple::data[3] )
  • заполните Tuple::data числами из формы std::initializer_list
Это не работает:

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

template
struct Tuple{
T data[sizeof...(args)];
Tuple(const T& args...):data{args...}{};
};
Я пробовал разные варианты, например:

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

template
//template
struct Tuple{
T data[sizeof...(args)];
//T data{args...};

//template 
//Tuple(T... args):data{args...}{};
Tuple(const T& args...):data{args...}{};
//Tuple(T* ...args):data{args...}{};
};
возможно, я не понимаю разницы между

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

T...args
и typename ...Args и args...

Я пытаюсь использовать это как простой пример, чтобы понять вариационные шаблоны и избежать использования std::initializer_list

Подробнее здесь: https://stackoverflow.com/questions/575 ... late-class
Ответить

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

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

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

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

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