Move FormattersMatchCandidate flags to a struct.
This removes some error-prone repetition in
FormatManager::GetPossibleMatches, where the same three boolean flags
are passed in a row multiple times as arguments to recursive calls to
GetPossibleMatches.
Instead of:
// same flags, but with did_strip_typedef set to true. GetPossibleMatches(..., did_strip_ptr, did_strip_ref, true);
we can now say
GetPossibleMatches(..., current_flags.WithStrippedTypedef());
which hopefully makes the intent clearer, and more readable in case we
add another flag.
We don't generally use the m_ prefix on structs. This struct is a bit of an edge case, as it has non-trivial member functions -- so one could consider making it a class (members private and public accessors) -- but if you don't want to do that (which is fine by me), then I think it'd be better to remove the prefixes.