api: span and string_view get extra contract asserts per std#5224
Open
lgritz wants to merge 1 commit into
Open
api: span and string_view get extra contract asserts per std#5224lgritz wants to merge 1 commit into
lgritz wants to merge 1 commit into
Conversation
According to C++26, some newly required std container hardening for std::span and std::string_view were not reflected in our own analogous types. In particular, some more precondition checking was required for span::subspan, first, last, and string_view::remove_prefix and remove_suffix in order to match the expectations of true parity with with the std versions. This is important because some day, we will probably discard our own string_view and span for the std ones (especially when we are using compilers in which they are fully hardened). I found a couple spots where we used remove_prefix and remove_suffix that assumed the range would be clamped, as it is in our version, rather than contractually require them to be valid ranges as in std. This would eventually fail if replaced by std::string_view, so fixing now. Signed-off-by: Larry Gritz <lg@larrygritz.com>
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.
According to C++26, some newly required std container hardening for std::span and std::string_view were not reflected in our own analogous types. In particular, some more precondition checking was required for span::subspan, first, last, and string_view::remove_prefix and remove_suffix in order to match the expectations of true parity with with the std versions.
This is important because some day, we will probably discard our own string_view and span for the std ones (especially when we are using compilers in which they are fully hardened).
I found a couple spots where we used remove_prefix and remove_suffix that assumed the range would be clamped, as it is in our version, rather than contractually require them to be valid ranges as in std. This would eventually fail if replaced by std::string_view, so fixing now.