You may use a subset of the utilities provided by the Abseil library when writing WebRTC C++ code. Below, we list the explicitly allowed and the explicitly disallowed subsets of Abseil; if you find yourself in need of something that isn’t in either subset, please add it to the allowed subset in this doc in the same CL that adds the first use.
Dependencies on Abseil need to be listed in deps using absolute path, for example "//third_party/abseil-cpp/absl/base:core_headers"
The rtc GN templates will take care of generating the proper dependency when used within Chromium or standalone. In the build_with_chromium mode, WebRTC will depend on the monolithic Abseil build target that will generate a shared library.
absl::AnyInvocable
absl::bind_front
absl::Cleanup
Hash tables, and B-tree ordered containers
absl::InlinedVector
absl_nonnull and absl_nullable
absl::NoDestructor
absl::WrapUnique
absl::string_view (preferred over std::string_view, see issue 42225436 for details)
The functions in absl/strings/ascii.h, absl/strings/match.h, and absl/strings/str_replace.h.
The functions in absl/strings/escaping.h.
The functions in absl/algorithm/algorithm.h and absl/algorithm/container.h.
The macros in absl/base/attributes.h, absl/base/config.h and absl/base/macros.h.
absl/numeric/bits.h
absl/crc
Single argument absl::StrCat
ABSL_FLAG is allowed in tests and tools, but disallowed in in non-test code.
absl::make_uniqueUse std::make_unique instead.
absl::MutexUse webrtc::Mutex instead.
absl::optional and absl::variantUse std::optional and std::variant directly.
absl::SpanUse std::span instead.
absl::Span differs from std::span on several points, in particular lacks static extent template parameter that WebRTC relies on.
absl::StrCat, absl::StrAppend, absl::StrJoin, absl::StrSplitUse webrtc::StringBuilder to build strings.
These are optimized for speed, not binary size. Even StrCat calls with a modest number of arguments can easily add several hundred bytes to the binary.
Exception: Single-argument absl::StrCat is allowed in order to make it easy to use AbslStringify. See TOTW #215 for details on AbslStringify.