И я решаю, что хочу передавать аргументы просто как список аргументов и как вектор. Версия списка аргументов просто создает их вектор, а затем передает его векторной версии функции, которая имеет всю ее реализацию.
Вот тестовый пример и реализация функции:
Код: Выделить всё
#include
template
std::size_t AddNumbers(std::vector Integers) {
auto Sum = std::reduce(Integers.begin(), Integers.end());
return Sum;
}
template
std::size_t AddNumbers(Type... Integers) {
std::vector IntegerSequence{(std::size_t)Integers...};
return AddNumbers(IntegerSequence);
}
TEST_CASE("Sum Test") {
SECTION("When passed no numbers, returns 0") {
auto Sum1 = AddNumbers();
auto Sum2 = AddNumbers(std::vector{});
CHECK(Sum1 == 0);
CHECK(Sum2 == 0);
}
SECTION("When passed 1 number, returns the number") {
auto Sum1 = AddNumbers(1);
auto Sum2 = AddNumbers(std::vector{ 1 });
CHECK(Sum1 == 1);
CHECK(Sum2 == 1);
}
SECTION("When passed 2 numbers, returns the sum of numbers") {
auto Sum1 = AddNumbers(1, 2);
auto Sum2 = AddNumbers(std::vector{ 1, 2 });
CHECK(Sum1 == 3);
CHECK(Sum2 == 3);
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... -arguments