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).