From a6e034adb9cdffda1254e0fcd1204b7917dc5195 Mon Sep 17 00:00:00 2001 From: Jiawei Ou Date: Sat, 24 Nov 2018 20:59:41 -0800 Subject: [PATCH] Rebase std::is_trivially_* with absl::is_trivially_* std::is_trivially_* is not available on certain old STL implementations. Using absl implementation will allow maximized compatibility. Bug: webrtc:10054 Change-Id: I17ed0fff44328b3d7c51d14e8c4470f1df0e66ad Reviewed-on: https://webrtc-review.googlesource.com/c/111728 Commit-Queue: Jiawei Ou Reviewed-by: Karl Wiberg Reviewed-by: Qingsi Wang Cr-Commit-Position: refs/heads/master@{#25788} --- DEPS | 1 + abseil-in-webrtc.md | 3 +++ rtc_base/BUILD.gn | 3 +++ rtc_base/sanitizer.h | 8 ++++---- 4 files changed, 11 insertions(+), 4 deletions(-) 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