Member 13856259 Ответов: 1

Существует ли эквивалент C++14 для Java varargs?


Я изо всех сил пытаюсь найти эквивалент C++ (14) для varargs, которые мы знаем из Java.

Что я уже пробовал:

Я отчасти (но не полностью) понимаю вариативные шаблоны и функции, поэтому я думаю, что хотел бы сделать что-то вроде этого:
template <typename... A>
void foo(A... a) { /*...*/ }

Теперь, хотя это работает для переменного количества параметров, я также хотел бы иметь возможность указать, каким типом должны быть все типы В A. Например, в Java можно было бы сделать:
void oof(int... i) { /*...*/ }

Есть ли чистый способ достичь этого в C++ 14?

1 Ответов

Рейтинг:
0

Jochen Arndt

В Java varags все параметры имеют один и тот же тип. Это в основном то же самое, что передача массива и его размер.

Так что вместо этого вы можете использовать что-то вроде этого:

void foo(int *arr, size_t size);
void foo(std::vector<int>& arr);

Ограничение шаблонов только определенными типами просто не входит в намерения шаблонов. Но это возможно и было задано раньше: c++ - ограничение вариативных аргументов шаблона - переполнение стека[^].


CPallini

5.