This is the first patch to fix clang-cl incompatibility prohibited to compile the header file. The patch covers the following case:
class CCommandBarCtrlBase {
public:
typedef int CMsgHookMap;
};
template <class T>
class CCommandBarCtrlImpl : public T {
public:
void foo() { void *p = new CMsgHookMap; // "new typename T::CMsgHookMap" works fine }
};
void bar() {
CCommandBarCtrlImpl<CCommandBarCtrlBase> x; x.foo();
}
This is a dangerous change, and should be done as a separate change if we still want to do it. I have seen cases where typo correction and -fms-compatibility end up fighting, and I don't think they've all been fixed.