Я создаю функцию (возможно, функцию-член, а не то, что она имеет значение... может быть, это так?), который должен принимать неизвестное количество аргументов, но я хочу, чтобы все они были одного типа. Я знаю, что могу передать массив или вектор, но я хочу иметь возможность принимать список аргументов напрямую без дополнительной структуры или даже дополнительных скобок. Это не похоже, что вариативные функции сами по себе являются типичными, и я не был уверен, как это сделать с помощью функций var/varadic. Здесь, по существу, то, к чему я стремлюсь (скорее всего, не правильный код, и полностью не с целью получения списков драконов, lol):
//typedef for dragon_list_t up here somewhere.
enum Maiden {
Eunice
, Beatrice
, Una_Brow
, Helga
, Aida
};
dragon_list_t make_dragon_list(Maiden...) {
//here be dragons
}
ИЛИ
template<Maiden... Maidens> dragon_list_t make_dragon_list(Maidens...) {
//here be dragons
}
ИСПОЛЬЗОВАНИЕ
dragon_list_t dragons_to_slay
= make_dragon_list(Maiden.Eunice, Maiden.Helga, Maiden.Aida)
;
Пробовал несколько вещей, подобных уже описанным, без кубиков. Предложения? Очевидные оплошности, которые я, возможно, сделал? Я знаю, что это не может быть огромной сделкой:
dragon_list_t make_dragon_list(std::array<Maiden> maidens) {
//here be dragons.
}
dragon_list_t dragons_to_slay
= make_dragon_list({Maiden.Eunice, Maiden.Helga, Maiden.Aida})
;
но я бы скорее сделал это первым, если возможно.