GCC 4.6 compatibility: no template aliases.
GCC 4.5 compatibility: no range-based for.
GCC 4.5 compatibility: need explicit typing.
GCC 4.5 compatibility: cannot default explicit constructor in class body.