Foul depths of hell? I've never programmed in C or C++, but this seems to me to be a map from strings to vectors of strings. Reads easily. I don't like the :: namespace separator, but what can you do...
using namespace std;
map<string, vector<string>> foo;Hence, I now implicitly import each symbol I need with something like 'using std::map;' (similar to python's 'from foo import bar, bar2').
I've found that the 'using' statement can be used even inside a function to restrict the importation to just a single function.
FYI.
I not so fondly remember a day hunting down a cryptic C compiler error coming from some header that had
#define F1 ...,
replacing F1 in my file by some cryptic mess...Great advice. Thanks!
In .cpp files it's ok (and almost required if you're using boost, unless you want boost::foo:bar::type everywhere). It still requires a bit of thought, though.