Thanks for your input on this, Simon! Unfortunately, the problem isn't only where
unordered_map is, it's also what it's called. Some older and weirder versions of GCC have
it as hash_map, and those compilers definitely won't have support for templated type
aliases like a good C++11 compiler will. I'd like to still maintain the fantasy that
Europa could run in a flight-like environment, so I'd like to keep as broad a base of
compiler support as possible.
My other goal here is to shift the blame... er... responsibility for platform-specific
issues outside the Europa codebase. I don't have a lot of resources at my disposal to
support it, so every point of configuration is one I'd like to avoid or eliminate. This
is why I'm starting to move the build to CMake. If I can get our two- or three-system
build system down to one, it'll be fabulous. If I can completely get rid of map-related
configuration and conditional compilation by depending on Boost unordered_map, almost as
good. While positive, neither of those things is worth the cost of users, which is why
I'm asking around.
> As for the general question of whether to introduce boost dependencies, I would suggest
> using them if they make sense (e.g. if BGL/ parallel BGL would be useful, it's silly to
> avoid them).
I'm definitely interested in using BGL. The STN and max-flow resource computations in
particular both have their own graph implementations that it would be nice to move to
something standard (and possibly faster) like that, especially if it can reduce our SLOC.
That's a fair-sized chunk of work.
> As for MPL - you might want to consider whether porting Europa to Common Lisp might be a
> viable solution :-)
Funny you should mention that. Back when Europa was called RAX, it was in Common Lisp!
(Due to a problem with C++ compiler support. The circle of software life.) I would like
to avoid MPL mostly due to the compilation overhead, but a lot of Boost libraries depend
on it, so I won't promise not to end up depending on it unless it's going to cause much
user consternation. I rather enjoy type-level programming, but it's very slow to compile
when you do it in C++.
~MJI