I decided to enable the Conformance Mode (permissive-) option that was introduced in Visual Studio 2017. It’s supposed to help me write code that is both more correct, and more portable. I found out quickly that it reports a lot of conformance issues! Especially bothersome is the fact that you can’t directly call inherited members in templates that have been derived from. You have to either declare a using statement at the top of your template class to inherit the parameters/members from the base template, or add a scope resolution operator to them. You could also change the call from function() to this->function(). Since ‘this‘ is always implicitly dependent in a template, this->function() is dependent and the lookup is therefore deferred until the template is actually instantiated. It was a lot of work cleaning things up, since this code base is so large.
The Orion Engine SDK has evolved all the way from Visual Studio 6.0, to the most recent 2019 version. I’m very pleased that it still builds correctly and cleanly with all of the strict options enabled!