История изменений
Исправление slovazap, (текущая версия) :
В шаблоны не учили что-ли?
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
template<typename... Args>
void pass(const Args&...) {}
template <class F, class... Args>
void multiforeach(F&& function, const Args&... args) {
pass(std::for_each(args.begin(), args.end(), function)...);
}
int main() {
std::vector<std::string> a = { "a1", "a2" };
std::vector<std::string> b = { "b1", "b2" };
std::vector<std::string> c = { "c1", "c2" };
multiforeach([](const std::string& s){std::cerr << s << std::endl;},a, b, c, std::vector<std::string>{"d1", "d2"});
return 0;
}
Можно и рекурсивно:
template <class F>
void multiforeach(F&&) {
}
template <class F, class C, class... More>
void multiforeach(F&& function, const C& container, const More&... more) {
std::for_each(container.begin(), container.end(), function);
multiforeach(function, more...);
}
Исходная версия slovazap, :
В шаблоны не учили что-ли?
#include <vector>
#include <string>
#include <iostream>
#include <algorithm>
template<typename... Args>
void pass(const Args&...) {}
template <class F, class... Args>
void multiforeach(F&& function, const Args&... args) {
pass(std::for_each(args.begin(), args.end(), function)...);
}
int main() {
std::vector<std::string> a = { "a1", "a2" };
std::vector<std::string> b = { "b1", "b2" };
std::vector<std::string> c = { "c1", "c2" };
multiforeach([](const std::string& s){std::cerr << s << std::endl;}, a, b, c);
return 0;
}
Можно и рекурсивно:
template <class F>
void multiforeach(F&&) {
}
template <class F, class C, class... More>
void multiforeach(F&& function, const C& container, const More&... more) {
std::for_each(container.begin(), container.end(), function);
multiforeach(function, more...);
}