Microsoft compiler permits the use of "static" specifier on out-of-class member template declaration.
This patch allows 'static' storage specifier on an out-of-line class member template declaration with a warning in Clang (To be compatible with Microsoft).
Intel C++ compiler allows the 'static' keyword with a warning in Microsoft mode. GCC allows this with a warning with -fpermissive.
Can you reverse the order here so it checks MSVCCompat first?