forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Disable usage of
__is_cpp17_contiguous_iterator
until libc++ rolls.
Though names prefixed with `__` are reserved for implementation use, specializing `__is_cpp17_contiguous_iterator` is currently the only way to tell libc++ that `memcpy()` can be safe to use with a custom iterator. Without this workaround, there are noticeable regressions, e.g. when using std::copy() with spans of trivially copyable types (see https://crbug.com/994174). However, https://reviews.llvm.org/D150801 renames this template to `__libcpp_is_contiguous_iterator`, which blocks rolling past this libc++ revision. As a workaround, temporarily forward declare and specialize both variants. ` In addition, C++20 provides an official way for a custom iterator to opt into these types of optimizations, using `iterator_concept`, so also go ahead and opt `CheckedContiguousIterator` into using this. Bug: 1449299 Bug: b/284031070 Change-Id: If4e667fca8d1475ce5ced76b6072134686d12f4a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4570684 Commit-Queue: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/main@{#1150815}
- Loading branch information
1 parent
9da90d2
commit 9bfbbff
Showing
2 changed files
with
44 additions
and
10 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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