<chrono>: Replace an elaborate table with a switch#5905
Merged
StephanTLavavej merged 1 commit intomicrosoft:mainfrom Nov 27, 2025
Merged
<chrono>: Replace an elaborate table with a switch#5905StephanTLavavej merged 1 commit intomicrosoft:mainfrom
<chrono>: Replace an elaborate table with a switch#5905StephanTLavavej merged 1 commit intomicrosoft:mainfrom
Conversation
Contributor
|
I think the jump table emitted by that |
zacklj89
approved these changes
Nov 25, 2025
Member
Author
|
I'm mirroring this to the MSVC-internal repo - please notify me if any further changes are pushed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
<chrono>formatting validated modifier characters by searching an elaborate table containing bitflags of allowed modifiers. It tried to useranges::findwith a PMD projection, but we needed a product code workaround for VSO-1664341 "/clrC++20 System.NullReferenceException when calling ranges algorithms with PMD projections".I initially tried to replace the
ranges::findwith a range-for loop as a perma-workaround, which was an improvement, but then I went further. We can replace all of this machinery with aswitch.By changing
void _Check_modifiertobool _Valid_modifier, we can further simplify the control flow by immediately returningtrueorfalse, and having the caller take care of throwing any exception.I'm adding
_STL_INTERNAL_CHECK(_Modifier == 'E' || _Modifier == 'O');for a previously implicit assumption.Finally, I'm adding a comment to cite the relevant Standardese for where this
switch's data comes from.