GCC 4.5 compatibility: cannot silence warnings in functions.
GCC 4.5 compatibility: no range-based for.
GCC 4.5 compatibility: no forward enum declarations.
GCC 4.5 compatibility: cannot deduce init list in templated function.
GCC 4.5 compatibility: no bool conversion of std::integral_constant.