From d902eb869bcfacc1bad14933ed9af4bed006d481 Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Tue, 16 Apr 2019 12:11:35 -0700 Subject: Export of internal Abseil changes. -- babbb6421068af3831870fd5995444437ace6769 by Derek Mauro : Rollback of: Make raw_hash_set_test less flaky. Split the timing loop into chunks so that we are less suceptible to antogantistic processes. PiperOrigin-RevId: 243854490 -- a2711f17a712f6d09799bf32363d67526737b486 by CJ Johnson : Relocates IsAtLeastForwardIterator to internal/inlined_vector.h PiperOrigin-RevId: 243846090 -- 6c14cdbeb9a61022c27f8957654f930d8abf2fc1 by Matt Kulukundis : Make raw_hash_set_test less flaky. Split the timing loop into chunks so that we are less suceptible to antogantistic processes. PiperOrigin-RevId: 243824289 -- ee6072a6b6e0ac653622524ceb09db3b9e870f96 by Samuel Benzaquen : Improve format parser performance. Replace the main switch with a lookup in the existing tag table. Improve the ABI of ConsumeUnboundConversion a little. PiperOrigin-RevId: 243824112 -- 24b9e6476dfa4be8d644359eab8ac6816492f187 by Abseil Team : Fix DR numbers: 3800 ? 3080, 3801 ? 3081. PiperOrigin-RevId: 243804213 -- 0660404074707e197684f07cc0bffe4a9c35cd2f by Abseil Team : Internal change. PiperOrigin-RevId: 243757359 -- ba0f5bb9b8584d75c4ffc44ff3cb8c691796ffc6 by Xiaoyi Zhang : Consolidate ABSL_INTERNAL_UNALIGNED_* implementation into memcpy. The compiler should be good enough to optimize these operations. See https://github.com/abseil/abseil-cpp/issues/269 for background. PiperOrigin-RevId: 243323941 -- 00853a8756548df7217513c562d604b4ee5c6ab9 by Eric Fiselier : Reexport memory.h from optional.h for compatibility between libc++ and libstdc++. PiperOrigin-RevId: 243313425 GitOrigin-RevId: babbb6421068af3831870fd5995444437ace6769 Change-Id: Ic53c127ad857a431ad60c98b27cc585fed50a3e3 --- absl/container/inlined_vector.h | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) (limited to 'absl/container/inlined_vector.h') diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h index 1ab4b2f..978d503 100644 --- a/absl/container/inlined_vector.h +++ b/absl/container/inlined_vector.h @@ -73,17 +73,12 @@ class InlinedVector { using AllocatorTraits = typename Storage::AllocatorTraits; template - using IsAtLeastForwardIterator = std::is_convertible< - typename std::iterator_traits::iterator_category, - std::forward_iterator_tag>; + using EnableIfAtLeastForwardIterator = absl::enable_if_t< + inlined_vector_internal::IsAtLeastForwardIterator::value>; template - using EnableIfAtLeastForwardIterator = - absl::enable_if_t::value>; - - template - using DisableIfAtLeastForwardIterator = - absl::enable_if_t::value>; + using DisableIfAtLeastForwardIterator = absl::enable_if_t< + !inlined_vector_internal::IsAtLeastForwardIterator::value>; using rvalue_reference = typename Storage::rvalue_reference; @@ -1060,7 +1055,9 @@ class InlinedVector { template void AssignForwardRange(ForwardIt first, ForwardIt last) { - static_assert(IsAtLeastForwardIterator::value, ""); + static_assert(absl::inlined_vector_internal::IsAtLeastForwardIterator< + ForwardIt>::value, + ""); auto length = std::distance(first, last); @@ -1084,7 +1081,9 @@ class InlinedVector { template void AppendForwardRange(ForwardIt first, ForwardIt last) { - static_assert(IsAtLeastForwardIterator::value, ""); + static_assert(absl::inlined_vector_internal::IsAtLeastForwardIterator< + ForwardIt>::value, + ""); auto length = std::distance(first, last); reserve(size() + length); @@ -1113,7 +1112,9 @@ class InlinedVector { template iterator InsertWithForwardRange(const_iterator position, ForwardIt first, ForwardIt last) { - static_assert(IsAtLeastForwardIterator::value, ""); + static_assert(absl::inlined_vector_internal::IsAtLeastForwardIterator< + ForwardIt>::value, + ""); assert(position >= begin() && position <= end()); if (ABSL_PREDICT_FALSE(first == last)) -- cgit v1.2.3