Some odd compilation problems here when compiling
under GCC. For some reason, when deriving a template
from another template, GCC now requires you to
explicitly indicate the entire scoped name of a
derived variable before you can use it. (This may
only be true of derived variables which are actually
dependent on the type of the parent template.)
The upshot is that Databases.h doesn't compile
because the VectorDatabase and MapDatabase reference
m_container from their parent template, and GCC can't
find this variable.
To fix, I added a new typedef to each of these
classes:
typedef Database< entity, std::vector<entity> >
inherited_database;
for VectorDatabase and
typedef Database< entity, std::map<entityid,
entity> > inherited_database;
for MapDatabase. Then I search and replaced every use
of "m_container" in these two classes (AND ONLY IN
THESE TWO CLASSES)
with "inherited_database::m_container".
This let Databases.h compile under VC8 and GCC