diff --git a/DEPS b/DEPS index 4d9e3654f3..7cbdebfc59 100644 --- a/DEPS +++ b/DEPS @@ -1447,6 +1447,7 @@ include_rules = [ # Abseil whitelist. Keep this in sync with abseil-in-webrtc.md. "+absl/container/inlined_vector.h", "+absl/memory/memory.h", + "+absl/meta/type_traits.h", "+absl/strings/ascii.h", "+absl/strings/match.h", "+absl/strings/string_view.h", diff --git a/abseil-in-webrtc.md b/abseil-in-webrtc.md index ae9facf6d4..1075aa9b79 100644 --- a/abseil-in-webrtc.md +++ b/abseil-in-webrtc.md @@ -16,6 +16,9 @@ adds the first use. * `absl::optional` and related stuff from `absl/types/optional.h`. * `absl::string_view` * The functions in `absl/strings/ascii.h` and `absl/strings/match.h` +* `absl::is_trivially_copy_constructible`, + `absl::is_trivially_copy_assignable`, and + `absl::is_trivially_destructible` from `absl/meta/type_traits.h`. * `absl::variant` and related stuff from `absl/types/variant.h`. ## **Disallowed** diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn index 27bf5dfe6f..75c4397ab7 100644 --- a/rtc_base/BUILD.gn +++ b/rtc_base/BUILD.gn @@ -379,6 +379,9 @@ rtc_source_set("sanitizer") { sources = [ "sanitizer.h", ] + deps = [ + "//third_party/abseil-cpp/absl/meta:type_traits", + ] } rtc_source_set("safe_compare") { diff --git a/rtc_base/sanitizer.h b/rtc_base/sanitizer.h index a9eccfcc94..8af0824b67 100644 --- a/rtc_base/sanitizer.h +++ b/rtc_base/sanitizer.h @@ -14,7 +14,7 @@ #include // For size_t. #ifdef __cplusplus -#include +#include "absl/meta/type_traits.h" #endif #if defined(__has_feature) @@ -98,10 +98,10 @@ namespace sanitizer_impl { template constexpr bool IsTriviallyCopyable() { - return static_cast(std::is_trivially_copy_constructible::value && - (std::is_trivially_copy_assignable::value || + return static_cast(absl::is_trivially_copy_constructible::value && + (absl::is_trivially_copy_assignable::value || !std::is_copy_assignable::value) && - std::is_trivially_destructible::value); + absl::is_trivially_destructible::value); } } // namespace sanitizer_impl