[libcxx-commits] [libcxx] a03c35f - [libc++][NFC] Avoid checking that string::iterator is a contiguous iterator (#178636)

via libcxx-commits libcxx-commits at lists.llvm.org
Fri Jan 30 05:29:16 PST 2026


Author: Nikolas Klauser
Date: 2026-01-30T14:29:12+01:00
New Revision: a03c35fad7f1ac825da99f99ccf186e20c542eaa

URL: https://github.com/llvm/llvm-project/commit/a03c35fad7f1ac825da99f99ccf186e20c542eaa
DIFF: https://github.com/llvm/llvm-project/commit/a03c35fad7f1ac825da99f99ccf186e20c542eaa.diff

LOG: [libc++][NFC] Avoid checking that string::iterator is a contiguous iterator (#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>`.

Added: 
    

Modified: 
    libcxx/include/__format/unicode.h

Removed: 
    


################################################################################
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