I am analyzing a binary that is moving from C++17 to C++20 mode to see why and where it changed size. This binary has a lot of lambdas in it. Unfortunately the MSVC naming pattern for lambdas changes based on the mode so the diff is almost impossible because every lambda is showing up as only-in-base or only-in-comparison. That leaves me unable to see the true diff.
The lambda names have a hash (cpp17) or incrementing number (cpp20) in the name. These can hopefully be ignored by the comparison while still giving accurate results.
Here is an anonymized example of what I'm observing (where HASH is a long pseudo-random string)
cpp17:
winrt::Contoso::implementation::MyClass::MyFunction::_l2::<lambda_HASH>::<lambda_HASH>::operator()()const
cpp20:
winrt::Contoso::implementation::MyClass::MyFunction::_l2::<lambda_1>::<lambda_1>::operator()()const
I am analyzing a binary that is moving from C++17 to C++20 mode to see why and where it changed size. This binary has a lot of lambdas in it. Unfortunately the MSVC naming pattern for lambdas changes based on the mode so the diff is almost impossible because every lambda is showing up as only-in-base or only-in-comparison. That leaves me unable to see the true diff.
The lambda names have a hash (cpp17) or incrementing number (cpp20) in the name. These can hopefully be ignored by the comparison while still giving accurate results.
Here is an anonymized example of what I'm observing (where HASH is a long pseudo-random string)
cpp17:
cpp20: