Страницы

Поиск по вопросам

понедельник, 9 декабря 2019 г.

Функции с переменным числом параметров одинакового типа

#cpp #cpp11


Как сделать так, чтобы в функцию можно было передавать переменное количество параметров
одного типа?
    


Ответы

Ответ 1



Например вот так: template void foo(std::initializer_list)

Ответ 2



Возможное решение для любого кол-ва одинаковых типов, не требующее указывать фигурные скобки при вызове: #include template void foo(T t, Types... types) { for(auto&& e: { t, types... }) { std::cout << e << " "; } std::cout << "\n"; } int main() { foo("hello", ",", "world"); foo(1, 2, 3, 4, 5); //foo(1, "hello"); // error }

Ответ 3



Вариант, с ошибкой компиляции если аргументы не совпадают: #include #include template struct Dummy{}; template::value>::type...>> void foo(const T &arg, const Args &...args){ } int main(){ int i = 0; double d = 0; foo(i, i); //ok foo(d, d); //ok //foo(i, d); //error }

Комментариев нет:

Отправить комментарий