Weird errors when upgrading code from C++17 to C++20 using MSVC 2022
Summary Upgrading a C++17 codebase to C++20 using MSVC 2022 triggered a series of obscure compiler errors (C3878, C2760, C2065, C7510) in template-heavy code. The root cause was the two-phase name lookup changes introduced in C++20, specifically the requirement to use the typename keyword for dependent type names. The template code relied on pre-C++20 behaviors … Read more