The C way makes it hard to find the name of the function (or even tell that it's a function declaration) when the return type is long.
std::vector<std::unordered_map<std::string, std::pair<std::string, std::string>>> foo(std::vector<std::vector<int>> x, std::unordered_map<std::string, std::string> y);