support for enable_if and other template metaprogramming techniques), for Clang (related to static const template class member initialisation) and for GCC (related to forward declaration of non-int enum classes).
and 2) fuck the Visual Studio compiler that crashes when confused.