#cpp #cpp11
Как сделать так, чтобы в функцию можно было передавать переменное количество параметров одного типа?
Ответы
Ответ 1
Например вот так: templatevoid foo(std::initializer_list ) Ответ 2
Возможное решение для любого кол-ва одинаковых типов, не требующее указывать фигурные скобки при вызове: #includetemplate 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 }
Комментариев нет:
Отправить комментарий