Export of internal Abseil changes.

--
855576faf9556573fd74c2874b290d8feb6565d5 by Gennadiy Rozental <rogeeff@google.com>:

Import of CCTZ from GitHub.

PiperOrigin-RevId: 241395451

--
b93bfd43eb2a992258f131e10f503526cfec6d48 by CJ Johnson <johnsoncj@google.com>:

Fixes comment over AbslHashValue for InlinedVector

PiperOrigin-RevId: 241368320

--
75f58dafcac7d78c28d92a61ec7e53c5b3b86697 by Matt Kulukundis <kfm@google.com>:

Do not call sampling logic for tables with custom allocators.

PiperOrigin-RevId: 241356451

--
09f1b4889476ff707a54189aff540e2fe1edcf61 by Derek Mauro <dmauro@google.com>:

Re-enable optionalTest.InPlaceTSFINAEBug after libc++ update

PiperOrigin-RevId: 241222673

--
01a8bb5a8cb1e13e88ddb92f9c0160beb6e126be by Derek Mauro <dmauro@google.com>:

Update Clang on Kokoro to r356196.

This includes a workaround for a -Wgnu-include-next warning fixed by
https://reviews.llvm.org/rG0706e144d57305782988dd4367530ae04986116f

PiperOrigin-RevId: 241222395

--
1de66bb669a7ec1494d6064677687f761ee2d369 by Abseil Team <absl-team@google.com>:

Remove identical test and fix char to string per comment

PiperOrigin-RevId: 240855512
GitOrigin-RevId: 855576faf9556573fd74c2874b290d8feb6565d5
Change-Id: Ie155b209ef5567e6597da6ef1844db7e2ad72586
This commit is contained in:
Abseil Team 2019-04-01 14:06:28 -07:00 committed by Gennadiy Rozental
parent 2c8421e1c6
commit 93dfcf74cb
22 changed files with 96 additions and 43 deletions

View file

@ -1437,7 +1437,18 @@ class raw_hash_set {
void initialize_slots() {
assert(capacity_);
if (slots_ == nullptr) {
// Folks with custom allocators often make unwaranted assumptions about the
// behavior of their classes vis-a-vis trivial destructability and what
// calls they will or wont make. Avoid sampling for people with custom
// allocators to get us out of this mess. This is not a hard guarntee but a
// workaround while we plan the exact guarantee we want to provide.
//
// People are often sloppy with the exact type of their allocator (sometimes
// it has an extra const or is missing the pair, but rebinds made it work
// anyway). To avoid the ambiguitity, we work off SlotAlloc which we have
// bound more carefully.
if (std::is_same<SlotAlloc, std::allocator<slot_type>>::value &&
slots_ == nullptr) {
infoz_ = Sample();
}