84 Commits

Author SHA1 Message Date
Abseil Team
e9f87bcdb1 Disable inlining for some templated symbols in Abseil
PiperOrigin-RevId: 919789320
Change-Id: Iffcd57ecdc2dc7137caf1fe5f8c052b9bd8a1cdc
2026-05-22 11:58:22 -07:00
Abseil Team
04b6110da9 Undo unintended inlining of absl::void_t -- the inlining didn't actually replace it with std::void_t
PiperOrigin-RevId: 898825657
Change-Id: Icd97cec5602753759608623619acd7c6fd5bc953
2026-04-13 00:35:49 -07:00
Abseil Team
eb76981586 Inline absl::void_t to std::void_t wherever possible
This won't replace all call sites, but that's fine. We only want to replace the call sites that compile fine, since they don't need to use absl::void_t.

PiperOrigin-RevId: 896017307
Change-Id: I7e78066dc973e135922b11fba5c7642563ef6a67
2026-04-07 11:55:56 -07:00
Abseil Team
e7c47687fe Deprecate and inline a lot of C++17 Abseil type traits
PiperOrigin-RevId: 895522956
Change-Id: Ie09a39d70578090a4128ab64b8c9a00f5b155a5e
2026-04-06 15:14:52 -07:00
Abseil Team
ed2114e8ff Stop using C++17 type traits polyfills
This will let us deprecate the declarations without triggering warnings in Abseil itself.

PiperOrigin-RevId: 894202105
Change-Id: I57bb2a1647be1fedf9b724a07042fd0f564ce074
2026-04-03 12:34:35 -07:00
Mike Kruskal
45c8989b87 Add a visibility placeholder to Abseil for Gloop.
PiperOrigin-RevId: 875292936
Change-Id: I5622f33f8d6581ca3f55783579f612e3e5c4822f
2026-02-25 12:48:48 -08:00
Abseil Team
b1b9c189ae Remove ABSL_META_INTERNAL_STD_HASH_SFINAE_FRIENDLY_ guard
All supported STLs are now SFINAE-friendly

PiperOrigin-RevId: 867626864
Change-Id: I604d19cda49f83e74638bed869b6da30cc013df5
2026-02-09 08:55:42 -08:00
Derek Mauro
442639517d Fix typo in requires.h
PiperOrigin-RevId: 853749037
Change-Id: I7a51d9b5ea12a211039a650caa5b8422dedaa7ac
2026-01-08 08:15:36 -08:00
Chris Kennelly
ab8fec82ff [meta] Add constexpr testing helper.
PiperOrigin-RevId: 846383067
Change-Id: Ia8dbbb805f59eb4cb5334290c3e24e0117777ca2
2025-12-18 12:58:18 -08:00
Chris Kennelly
641721e94f BUILD file reformatting.
PiperOrigin-RevId: 846286050
Change-Id: Ib2b6bd5c1f69146cdccc8d14b661abb6e1a17498
2025-12-18 08:44:04 -08:00
Chris Kennelly
03ea849fa2 absl/meta: Add C++17 port of C++20 requires expression for internal use
PiperOrigin-RevId: 846259270
Change-Id: I0126a78949b15fbbafca7c8dba3e3b60df30914b
2025-12-18 07:29:32 -08:00
Jesse Rosenstock
820cd9ee90 type_traits: Add type_identity and type_traits_t backfills
https://en.cppreference.com/w/cpp/types/type_identity.html

PiperOrigin-RevId: 812886166
Change-Id: I159cf4e4bdbe2ac801768ff6c996c2d2a3d47a71
2025-09-29 12:03:04 -07:00
Abseil Team
0739328652 Add std::pair specializations for IsOwner and IsView
Also fix a typo in the comment.

Fixes: #1930
PiperOrigin-RevId: 804996432
Change-Id: Iec326a4e066a885295a09691dd6773847b9a68a3
2025-09-09 11:35:33 -07:00
Abseil Team
878361312d Automated Code Change
PiperOrigin-RevId: 783054860
Change-Id: I3f84881642f2f77be5d5275983243edf6305178c
2025-07-14 15:00:34 -07:00
Derek Mauro
a4950fba03 Use __builtin_is_cpp_trivially_relocatable to implement
absl::is_trivially_relocatable in a way that is compatible with PR2786
in the upcoming C++26.

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2786r11.html

This change is being made now because Chromium is reporting that a
recent LLVM commit adds deprecation warnings for
__is_trivially_relocatable.
https://github.com/llvm/llvm-project/pull/138835

PiperOrigin-RevId: 756408712
Change-Id: Iacf966ed2ebfd436d52d180f0dab34465b3c7176
2025-05-08 12:12:17 -07:00
Omer Mor
464b5b366c Deprecate ABSL_HAVE_STD_STRING_VIEW.
This macro is no longer necessary now that Abseil requires C++17.

PiperOrigin-RevId: 755992345
Change-Id: Id1361d62d860a0ba4bdfca22e8f39d54812ef82c
2025-05-07 13:52:30 -07:00
Derek Mauro
f1b7d000b8 Remove the polyfill implementations for many type traits and alias
them to their std equivalents. It is recommended that clients now
simple use the std equivalents.

PiperOrigin-RevId: 731931492
Change-Id: I1f204dd659f12c4d9cc183f230ce13052a523625
2025-02-27 17:47:09 -08:00
Abseil Team
81d48b3e43 Annotate some Abseil container methods with [[clang::lifetime_capture_by(...)]]
This will allow catching some lifetime issues such as the following:
```
absl::flat_hash_set<absl::string_view> s;
s.add(std::string(...));  // dangling
```
PiperOrigin-RevId: 714123078
Change-Id: I67f382e97fa8d5e2dc2b58a1ccb8cc013819e4b3
2025-01-10 11:43:32 -08:00
Evan Brown
4198d9a96a Change the definition of is_trivially_relocatable to be a bit less conservative.
Instead of ignoring __is_trivially_relocatable, use __is_trivially_relocatable && std::is_trivially_move_assignable.

PiperOrigin-RevId: 709106861
Change-Id: I2d53bd440133ad17bb676e53ee6a17d420a565d1
2024-12-23 11:15:54 -08:00
Derek Mauro
90a7ba66e8 Updates to CI to support newer versions of tools
Linux "latest" containers updated to
GCC 14.2
CMake 3.31.2
Bazel 8.0.0

Included are various fixes to get these versions to work.

Bazel now references repositories by their canonical names from the
Bazel Central Registry. For example, Abseil is now @abseil-cpp instead
of @com_google_absl, and GoogleTest is now @googletest instead of
@com_google_googletest. Users still using the old WORKSPACE system may
need to use `repo_mapping` on repositories using the old names. See
`WORKSPACE.bazel` in this commit for an example.

PiperOrigin-RevId: 709102146
Change-Id: I02327ed4f8fb947766480bdeef2b1930a7f831eb
2024-12-23 10:58:05 -08:00
Abseil Team
8f9e5f0203 Restore string_view detection check
PiperOrigin-RevId: 623195368
Change-Id: Iadb9bdedee4d9b5ced4fff9e6316ee63f9a89ea5
2024-04-09 09:42:59 -07:00
Abseil Team
d5e4260976 Temporarily revert dangling std::string_view detection until dependent is fixed
PiperOrigin-RevId: 621413395
Change-Id: I20e9fac94e81e59c0d723f115670c8cf68e9b44a
2024-04-02 23:42:08 -07:00
Abseil Team
8a31d4a8dd Add internal traits for lifetimebound detection
This will helps compilers that understand `ABSL_ATTRIBUTE_LIFETIME_BOUND` flag constructs such as
`absl::StatusOr<std::string_view> str = std::string(...)`
as error-prone.

For standard types, this is done via specializing the type traits.
For all other types, this is done by detecting the presence of a Boolean member trait such as:
`using absl_internal_is_view = std::true_type;`
in the type.

This is purely intended as a safety feature, and the values of these traits (even if wrong!) must NOT be depended on for correct behavior.
Furthermore, only high-value types (such as `absl::StatusOr`) are the intended users here.
Do not declare or use these traits on arbitrary types that are unlikely to be misused.

Do not depend on any of these to be stable, as they not (yet) public APIs.
Moreover, the trait declarations and mechanisms are all subject to change.
(For example, if `[[clang::lifetimebound]]` becomes possible to detect directly, the traits may need to be altered to utilize that, and distinguish between assignments and constructions.)

Should these or similar APIs be made public at a later point, the detection mechanisms may be altered quickly, and may (either loudly or silently) break existing code depending on these internal APIs without notice.

PiperOrigin-RevId: 620868493
Change-Id: I4a528a1dcf0df6ffbc3641d09537bc4c674aee4e
2024-04-01 09:28:20 -07:00
Derek Mauro
42133464db Remove absl::aligned_storage_t
Consistent with std::aligned_storage_t, it is deprecated in C++23.

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p1413r3.pdf
has a suggested replacement

PiperOrigin-RevId: 617367005
Change-Id: I009533c5609c8ffd77e406e1fc88e51a3ce99f9f
2024-03-19 19:23:02 -07:00
Arthur O'Dwyer
14b8a4eac3 PR #1625: absl::is_trivially_relocatable now respects assignment operators
Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1625

Trivial relocatability also requires that the type not do anything weird with its assignment operator; update the type-trait to reflect this. (This is the definition used by BSL, Folly, HPX, Thrust, Parlay, Amadeus, and P1144.)

This is important if we want to use `absl::is_trivially_relocatable` as a gate for memcpy optimizations in `inlined_vector::erase` and/or `inlined_vector::swap`, because in those cases relocation is used to replace part of a sequence involving assignment; the optimization requires an assignment operator that behaves value-semantically.

Clang's builtin currently fails to check the assignment operator, so we stop using it entirely for now. We already refused to use it on Win32, Win64, and Apple, for various unrelated reasons. I'm working on giving Clang's builtin the behavior that would let us re-enable it here.

Assume that any compiler providing both `__cpp_impl_trivially_relocatable` and a builtin `__is_trivially_relocatable(T)` will use the appropriate (P1144) definition for its builtin. Right now there's only one such compiler (the P1144 reference implementation, which forks Clang), so this is largely a moot point, but I'm being optimistic.
Merge d943abdbab into 34604d5b1f

Merging this change closes #1625

COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1625 from Quuxplusone:trivially-relocatable d943abdbab
PiperOrigin-RevId: 607977323
Change-Id: I6436a60326c6d1064bdd71ec2e15b86b7a29efd4
2024-02-17 09:33:19 -08:00
Abseil Team
df2c771ec5 On Apple, implement absl::is_trivially_relocatable with the fallback.
The Apple implementation gives false positives starting with
Xcode 15.

PiperOrigin-RevId: 605726702
Change-Id: I2e5e574eca08071d24e97304f005cf9c78230913
2024-02-09 14:09:28 -08:00
Derek Mauro
0ef3ef4329 Bazel: Enable the header_modules feature
PiperOrigin-RevId: 572575394
Change-Id: Ic1c5ac2423b1634e50c43bad6daa14e82a8f3e2c
2023-10-11 07:58:06 -07:00
Derek Mauro
143e983739 Bazel: Support layering_check and parse_headers
The layering_check feature ensures that rules that include a header
explicitly depend on a rule that exports that header. Compiler support
is required, and currently only Clang 16+ supports diagnoses
layering_check failures.

The parse_headers feature ensures headers are self-contained by
compiling them with -fsyntax-only on supported compilers.

PiperOrigin-RevId: 572350144
Change-Id: I37297f761566d686d9dd58d318979d688b7e36d1
2023-10-10 13:30:24 -07:00
Derek Mauro
aaf4842c10 Avoid trying to use __is_trivially_relocatable with NVCC
Fixes #1479

PiperOrigin-RevId: 542022998
Change-Id: I9d6059341fe867ad5539ef2a4d57925858a9cfc0
2023-06-20 12:59:43 -07:00
Copybara-Service
ae87791869 Merge pull request #1468 from Romain-Geissler-1A:silence-aligned_storage-warning
PiperOrigin-RevId: 538651091
Change-Id: Id1aa7ab287beb252f4826f70e26b7e3bfa80c462
2023-06-07 18:46:48 -07:00
Romain Geissler
c3b5a293aa Silence std::aligned_storage warnings in C++23 mode.
This is only a workaround, working only with gcc/clang, while waiting
for a better long term fix not using std::aligned_storage, which is
tracked by b/260219225.
2023-06-06 14:18:42 +00:00
Vertexwahn
9c32e50df8 Fix spelling mistakes 2023-04-27 22:10:09 +02:00
Derek Mauro
cb204d6d9c Replace absl::type_traits_internal::is_trivially_copyable with
std::is_trivially_copyable

PiperOrigin-RevId: 523724345
Change-Id: Id68c79c3bbb253d892bdef4659ac8a926e023d12
2023-04-12 09:38:31 -07:00
Aaron Jacobs
6b4af2497b type_traits: don't use __is_trivially_relocatable with Clang on Windows.
It currently gives the wrong result for types with a user-provided destructor:

    struct S {
      ~S();
    };

    static_assert(!__is_trivially_relocatable(S));

PiperOrigin-RevId: 519855600
Change-Id: I5f0659ad0831974805a5ed4b615e3b6250d23154
2023-03-27 16:08:57 -07:00
Abseil Team
b6a1039bfc type_traits: provide a better fallback for is_trivially_relocatable.
We can do a lot better than always saying "no" on platforms without the
__is_trivially_relocatable builtin. This will allow using this type trait from
the move constructors of InlinedVector in a future CL, without needing to open
code the fallback logic.

PiperOrigin-RevId: 519281125
Change-Id: I0d55f019331966f58074850d6f77c7eab49f2c53
2023-03-24 18:00:15 -07:00
Abseil Team
c9f49460fa type_traits: touch up the docs for is_trivially_relocatable.
Clarify that the trait is conservative: it's safe to act on if it's true, but
false doesn't necessarily mean anything. Of course this is the only reasonable
way to use it, but I think it's helpful to be explicit, especially because
currently this trait *always* returns false on some platforms even for a type
like int.

PiperOrigin-RevId: 519272294
Change-Id: Ic63a48dcf18efc0756046b3d6f51d11cbb46a469
2023-03-24 17:04:24 -07:00
Abseil Team
7b9f660fc3 type_traits_test: add better coverage of is_trivially_relocatable.
In preparation for changing its definition in an upcoming commit.

PiperOrigin-RevId: 519141790
Change-Id: I49b608a575ad41e2f29d82489c1c09eec8c4d7e5
2023-03-24 07:49:05 -07:00
Derek Mauro
7b46123329 Remove backfills of some type traits that are now fully supported
PiperOrigin-RevId: 512622121
Change-Id: If90aaf7939062bd475253c372d9d7950c98c7150
2023-02-27 07:33:43 -08:00
Martijn Vels
a0b102c35b Add absl::is_constant_evaluated for pre-c++20 support
PiperOrigin-RevId: 503437019
Change-Id: I3630fec690f1472130fef21b16dfcd3c5208aa69
2023-01-20 07:21:07 -08:00
Derek Mauro
04596b253f Add a TODO for the deprecation of absl::aligned_storage_t
PiperOrigin-RevId: 491367420
Change-Id: I6a0ab74bb0675fd910ed9fc95ee20c5023eb0cb6
2022-11-28 09:37:03 -08:00
Evan Brown
d859fafe1a Change the macro ABSL_IS_TRIVIALLY_RELOCATABLE into a type trait - absl::is_trivially_relocatable - and move it from optimization.h to type_traits.h.
Example of how to change to the new type trait:
```
#include "absl/base/attributes.h"

if (ABSL_IS_TRIVIALLY_RELOCATABLE(T)) { DoSomething(); }
```
to
```
#include "absl/meta/type_traits.h"

if (absl::is_trivially_relocatable<T>::value) { DoSomething(); }
```

Note that optimization.h is also built in C mode so we can't put a type trait there.

PiperOrigin-RevId: 475633715
Change-Id: I2bc85f3f6711d1280049fd01eb97c497d2d0d929
2022-09-20 13:13:13 -07:00
Abseil Team
cfe27e79cf Map the absl::is_trivially_* functions to their std impl
There's no point redefining these functions if they are supported by the compiler and the version of libstdc++. Also, some of the builtins used by the absl implementation of these functions (e.g. __has_trivial_destructor) have been deprecated in Clang 15.

PiperOrigin-RevId: 465554125
Change-Id: I8674c3a5270ce3c654cdf58ae7dbd9d2bda8faa5
2022-08-05 06:56:59 -07:00
Vertexwahn
22f482f0fc Remove bazelbuild/rules_cc dependency (#1038) 2021-10-14 13:01:52 -04:00
Abseil Team
4167eab063 Export of internal Abseil changes
--
506fa3e10b3d8399ad937c32ecea26d1ad4e62bb by Abseil Team <absl-team@google.com>:

Disable ABSL_HAVE_STD_IS_TRIVIALLY_ASSIGNABLE when GCC < 8.2.0 is used with libc++

PiperOrigin-RevId: 399707056

--
656b7c7cee87f46a4bc7953618796f82da08e62c by Derek Mauro <dmauro@google.com>:

Remove the MSVC flag implementation from flag.h to help clarify that
methods on absl::Flag<T> are not part of the public API

PiperOrigin-RevId: 399584678

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

Get rid of MemcpyIfAllowed while continuing to suppress erroneous warnings

PiperOrigin-RevId: 399468864

--
5f9a66895f707ba001fb51b88c0c6025f8c872a3 by Abseil Team <absl-team@google.com>:

Use feature testing to check for availability of invoke_result.

Feature testing should be available by C++20, which removes invoke_result.
https://en.cppreference.com/w/cpp/feature_test

PiperOrigin-RevId: 399447373

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

Add rvalue-reference qualifier to the Commit method on ConstructionTransaction

PiperOrigin-RevId: 399442206

--
726a4d036eff49aeb6fd0ca2b1775699b6844395 by Greg Falcon <gfalcon@google.com>:

Internal change

PiperOrigin-RevId: 399441870

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

Clang-format whitespace changes

PiperOrigin-RevId: 399281271

--
4a828cde95a07421d699ebac775b37810624214f by Derek Mauro <dmauro@google.com>:

Internal change

PiperOrigin-RevId: 399234071

--
e520c72b34ba2f98668c889139001f8276243d31 by Greg Falcon <gfalcon@google.com>:

Import of CCTZ from GitHub.

PiperOrigin-RevId: 399233662
GitOrigin-RevId: 506fa3e10b3d8399ad937c32ecea26d1ad4e62bb
Change-Id: I92b9176d2387c08eb167f9268efa78b55b8e09c2
2021-09-30 10:00:30 -04:00
Abseil Team
020619c4aa Export of internal Abseil changes
--
336f161ad8cb2cc3e1a6bbcbbb8c5b692ee59789 by Derek Mauro <dmauro@google.com>:

Internal change

PiperOrigin-RevId: 398308807

--
80d512823d17561a45feca81f37713a91a175349 by Abseil Team <absl-team@google.com>:

Internal change.

PiperOrigin-RevId: 398257218

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

Fix documentation for btree_multi{map,set}::merge to match behavior for elements with equivalent keys.

PiperOrigin-RevId: 398071060

--
8a9a302aebf2419e83f0c7dc5a63c33d26b807a3 by James Y Knight <jyknight@google.com>:

Silence -Wunused-value warning newly emitted by ToT Clang.

The value is being intentionally ignored, as the purpose of the call is only to eliminate this overload via SFINAE when `GenT{}` is not constant evaluable.

PiperOrigin-RevId: 397861294
GitOrigin-RevId: 336f161ad8cb2cc3e1a6bbcbbb8c5b692ee59789
Change-Id: I946e1d22619f92ce6a424c8c13a20a50b39ed463
2021-09-22 16:01:25 -04:00
Florin Crișan
8f92175783 CMake: add option to use Google Test already installed on system (#969)
As of this change, you can use `-DABSL_USE_EXTERNAL_GOOGLETEST=ON -DABSL_FIND_GOOGLETEST=ON` to have Abseil use the standard CMake find_package(GTest) mechanism.
2021-06-09 19:26:40 -04:00
Abseil Team
5dd2407243 Export of internal Abseil changes
--
60b8e77be4bab1bbd3b4c3b70054879229634511 by Derek Mauro <dmauro@google.com>:

Use _MSVC_LANG for some C++ dialect checks since MSVC doesn't
set __cplusplus accurately by default.

https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/

See GitHub #722.

PiperOrigin-RevId: 371362181

--
5d736accdff04db0e722f377c0d79f2d3ed53263 by Martijn Vels <mvels@google.com>:

Fix the estimated memory size for CordRepExternal

PiperOrigin-RevId: 371350380

--
eaaa1d8a167aeca67a2aa3a098a2b61a9d72172f by Martijn Vels <mvels@google.com>:

Remove flakes by not enforcing re-allocated pointers do never match original

Tests that do multiple updates could end up with the original allocated pointer on a 2nd resize, so the 'EqIfPrivate' should not assume that if we do 'not' have the capacity that all following relocations will never match the original. We only care about 'pointer unchanged if private and there is capacity', trying to establish 'pointer changed at some point due to re-allocation; is pointless.

PiperOrigin-RevId: 371338965

--
d1837bee6bade1902b095c1cbf64231668bb84c5 by Martijn Vels <mvels@google.com>:

Undo inline of small data copy in cord

This leads to a performance regression as the code is not inlined (absent hard FDO inputs), and there are no suitable tail call options.

PiperOrigin-RevId: 371332332

--
06dc64b833069efc7d18b11df607c8c22be690da by Martijn Vels <mvels@google.com>:

Add final instrumentation for Cordz and remove 'old' cordz logic.

This change instruments the last cord function for cordz. It removes the 'old' functions: set_tree, replace_tree, UpdateCordzStatistics and RecordMetrics.

PiperOrigin-RevId: 371219909

--
a5e0be538579c603052feec03e6d9910c43ea787 by Martijn Vels <mvels@google.com>:

Extend the life of CordRep* if inside a snapshot

If a snapshot (potentially) includes the current CordzInfo, we need to extent the lifetime of the CordRep*, as the snapshot 'point in time' observation of the cord should ideally be preserved.

PiperOrigin-RevId: 371146151

--
74d77a89774cd6c8ecdeebee0193b294a39383d6 by Martijn Vels <mvels@google.com>:

Instrument std::string consuming methods: ctor, operator=, Append and Prepend

This change moves the 'steal into CordRep' logic into a separate function so we can use it directly in the ctor, operator assign and append and prepend, allowing Cordz instrumentation with the proper method attributes.

The assign operator is implemented in AssignLargeString leaving the dispatch inlined in cord.h (which as a side effects also allows clean tail calls in the AssignLargeString method)

PiperOrigin-RevId: 371094756

--
b39effc45266b7ce2e7f96caa3b16cb6e3acc2dd by Martijn Vels <mvels@google.com>:

Add Cordz instrumentation to CordReader

PiperOrigin-RevId: 370990181
GitOrigin-RevId: 60b8e77be4bab1bbd3b4c3b70054879229634511
Change-Id: I96af62e6f1a643e8b1228ae01e6c84e33706bb05
2021-04-30 13:55:34 -04:00
Abseil Team
9fe3519549 Export of internal Abseil changes
--
6b5be2524a088d0f4e8475794dc71232a24e94d8 by Abseil Team <absl-team@google.com>:

Enable ABSL_HAVE_ATTRIBUTE_WEAK for Windows with Clang >= 9.0.0

The bug (https://bugs.llvm.org/show_bug.cgi?id=37598) motivated the workaround
was fixed in 9.0.0.

PiperOrigin-RevId: 365682074

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

Add IsFlat() evaluation to GetFlatAux for RingBuffer

PiperOrigin-RevId: 365666501

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

Implement C++11 compatible std::remove_cvref added in C++20

PiperOrigin-RevId: 365606639

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

Add IsFlat() support to CordRepRing

PiperOrigin-RevId: 365562090

--
2cfeff9280f4967c4f828812bfe153b4e9cbabb7 by Abseil Team <absl-team@google.com>:

Make unit test for TryFlat on 'substring of rep' explicit

PiperOrigin-RevId: 365081382
GitOrigin-RevId: 6b5be2524a088d0f4e8475794dc71232a24e94d8
Change-Id: Ibb577748176217ce237614a6fe77c05375a97003
2021-03-30 03:29:51 -04:00
Abseil Team
e19260fd7d Export of internal Abseil changes
--
1f91ba7fcb79244fce1fe448c1d31fb5b0580584 by Derek Mauro <dmauro@google.com>:

Internal change

PiperOrigin-RevId: 343511158

--
8dcd61fed44f4e56044aa4a899cc3124117fa21f by Abseil Team <absl-team@google.com>:

refactors result_of so it doesn't unnecessarily break in C++20 mode

std::result_of was deprecated in C++17 and removed in C++20. This CL
adds an implementation detail so it transparently continues to work
when external users turn up to C++20 or later.

The implementation is derived from C++17's specification of result_of
[depr.meta.types][1].

[1]: https://timsong-cpp.github.io/cppwp/n4659/depr.meta.types

Fixes #649

PiperOrigin-RevId: 343395432
GitOrigin-RevId: 1f91ba7fcb79244fce1fe448c1d31fb5b0580584
Change-Id: Id5d9c55dc7547737bade48a15f2f5740f414d811
2020-11-20 13:05:26 -05:00
Abseil Team
fbf0fdab62 Export of internal Abseil changes
--
9f746b79e16d36dba908ed9e2a586d890fe54acc by Derek Mauro <dmauro@google.com>:

Remove the Bazel mirror URL that we use in our WORKSPACE file

This doesn't appear to be supported. We use --distdir caching in our tests.

PiperOrigin-RevId: 327634738

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

Removing comments following license() rules as they are rarely useful, redundant with LICENSE files, and tend to fall out of date.

PiperOrigin-RevId: 327504063

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

Change GetAllFlags API to return a collection of mutable flag handles.

This will make this interface on par with FindCommandLineFlag and allow to call
CommandLineFlag::ParseFrom on the handle returned by GetAllFlags.
PiperOrigin-RevId: 327499084

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

Make raw_hash_set compile when AllocTraits::propagate_on_container_swap is false.

PiperOrigin-RevId: 327371107

--
837f62c85ea65c1d6b847a75816198c625fe62ff by Abseil Team <absl-team@google.com>:

On macOS, `mem_alloc` is defined like this:

rpc/types.h:86:#define mem_alloc(bsize)	calloc(1, bsize)

So if that file is included before container_memory.h, the variable mem_alloc
may never get defined. This is fixed by using a different name.

PiperOrigin-RevId: 327360224

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

Release of absl::GetAllFlags API.

PiperOrigin-RevId: 327275943
GitOrigin-RevId: 9f746b79e16d36dba908ed9e2a586d890fe54acc
Change-Id: I99c5c87dd1712bf8df9a52397b0c1e400a3c3447
2020-08-20 15:09:31 -04:00