Isn't that what msvc does? I remember it's a little weird about when it actually checks for errors in templated code
These days it supports both. (IIRC the default is legacy/nonstandard, you select the standard behavior with /fpermission-, and VS adds /fpermission- to newly generated projects)
https://devblogs.microsoft.com/cppblog/two-phase-name-lookup...