Before C++20, MSVC was supporting not mentioning the template argument of the base class when initializing a class inheriting a templated base class.
So the following code compiled correctly:
template <class T> class Base { }; template <class T> class Derived : public Base<T> { public: Derived() : Base() {} }; void test() { Derived<int> d; }
See https://godbolt.org/z/Pxxe7nccx for a conformance view.
This patch adds support for such construct when in MSVC compatibility mode.