diff --git a/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h b/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h index 459c6a5..4bc8da8 100644 --- a/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h +++ b/src/3rdparty/chromium/third_party/webrtc/rtc_base/checks.h @@ -224,76 +224,27 @@ ToStringVal MakeVal(const T& x) { template class LogStreamer; -// Base case: Before the first << argument. -template <> -class LogStreamer<> final { - public: - template ())), - absl::enable_if_t::value || - std::is_enum::value>* = nullptr> - RTC_FORCE_INLINE LogStreamer operator<<(U arg) const { - return LogStreamer(MakeVal(arg), this); - } - - template ())), - absl::enable_if_t::value && - !std::is_enum::value>* = nullptr> - RTC_FORCE_INLINE LogStreamer operator<<(const U& arg) const { - return LogStreamer(MakeVal(arg), this); - } - -#if RTC_CHECK_MSG_ENABLED - template - RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file, - const int line, - const char* message, - const Us&... args) { - static constexpr CheckArgType t[] = {Us::Type()..., CheckArgType::kEnd}; - FatalLog(file, line, message, t, args.GetVal()...); - } - - template - RTC_NORETURN RTC_FORCE_INLINE static void CallCheckOp(const char* file, - const int line, - const char* message, - const Us&... args) { - static constexpr CheckArgType t[] = {CheckArgType::kCheckOp, Us::Type()..., - CheckArgType::kEnd}; - FatalLog(file, line, message, t, args.GetVal()...); - } -#else - template - RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file, - const int line) { - FatalLog(file, line); - } -#endif -}; // Inductive case: We've already seen at least one << argument. The most recent // one had type `T`, and the earlier ones had types `Ts`. template class LogStreamer final { public: - RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer* prior) + RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer * const prior) : arg_(arg), prior_(prior) {} template ())), absl::enable_if_t::value || std::is_enum::value>* = nullptr> - RTC_FORCE_INLINE LogStreamer operator<<(U arg) const { - return LogStreamer(MakeVal(arg), this); + RTC_FORCE_INLINE auto operator<<(U arg) const { + return LogStreamer(MakeVal(arg), this); } template ())), absl::enable_if_t::value && !std::is_enum::value>* = nullptr> - RTC_FORCE_INLINE LogStreamer operator<<(const U& arg) const { - return LogStreamer(MakeVal(arg), this); + RTC_FORCE_INLINE auto operator<<(const U& arg) const { + return LogStreamer(MakeVal(arg), this); } #if RTC_CHECK_MSG_ENABLED @@ -328,6 +279,53 @@ class LogStreamer final { const LogStreamer* prior_; }; + +// Base case: Before the first << argument. +template <> +class LogStreamer<> final { + public: + template ::value || + std::is_enum::value>* = nullptr> + RTC_FORCE_INLINE auto operator<<(U arg) const { + return LogStreamer(MakeVal(arg), this); + } + + template ::value && + !std::is_enum::value>* = nullptr> + RTC_FORCE_INLINE auto operator<<(const U& arg) const { + return LogStreamer(MakeVal(arg), this); + } + +#if RTC_CHECK_MSG_ENABLED + template + RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file, + const int line, + const char* message, + const Us&... args) { + static constexpr CheckArgType t[] = {Us::Type()..., CheckArgType::kEnd}; + FatalLog(file, line, message, t, args.GetVal()...); + } + + template + RTC_NORETURN RTC_FORCE_INLINE static void CallCheckOp(const char* file, + const int line, + const char* message, + const Us&... args) { + static constexpr CheckArgType t[] = {CheckArgType::kCheckOp, Us::Type()..., + CheckArgType::kEnd}; + FatalLog(file, line, message, t, args.GetVal()...); + } +#else + template + RTC_NORETURN RTC_FORCE_INLINE static void Call(const char* file, + const int line) { + FatalLog(file, line); + } +#endif +}; + template class FatalLogCall final { public: