[libcxx-commits] [libcxx] [libc++][NFC] Avoid checking that string::iterator is a contiguous iterator (PR #178636)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jan 29 03:24:12 PST 2026
https://github.com/philnik777 created https://github.com/llvm/llvm-project/pull/178636
`__is_continuation` is only used in contexts where we already know that the argument is a contiguous iterator. However, due to the context in which it is used, we check it as soon as the header is included. The `contiguous_iterator` check is quite expensive (~12ms on my system), so avoiding it reduces compile times for quite a few headers, including `<vector>`.
>From 1d22ae1d1eeec69a5bc9f623ec249c79ffa102f3 Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Thu, 29 Jan 2026 12:21:48 +0100
Subject: [PATCH] [libc++][NFC] Avoid checking that string::iterator is a
contiguous iterator
---
libcxx/include/__format/unicode.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/include/__format/unicode.h b/libcxx/include/__format/unicode.h
index 46096fda1e8ae..dbb87f2d711b0 100644
--- a/libcxx/include/__format/unicode.h
+++ b/libcxx/include/__format/unicode.h
@@ -101,7 +101,7 @@ inline constexpr __consume_result __consume_result_error{__replacement_character
return __unicode::__is_code_point(__value) && !__unicode::__is_surrogate(__value);
}
-template <contiguous_iterator _Iterator>
+template <class _Iterator>
requires same_as<iter_value_t<_Iterator>, char>
_LIBCPP_HIDE_FROM_ABI constexpr bool __is_continuation(_Iterator __char, int __count) {
do {
More information about the libcxx-commits
mailing list