#include <map>
#include <string>
#include <iostream>

template<typename T, typename F>
void ForEachOf(T&& map, F&& func) {
    for(auto& pair : map) {
        func(pair.first, pair.second);
    }
}

int main(void) {
	std::map<int, std::string> m { {1, "foo"}, {3, "bar"}};
    ForEachOf({ {1, "foo"}, {3, "bar"}}, [](auto key, auto value) {
        ::std::cout << key << value;
    });
}
