Revert "Adding support for enum class in RTC_CHECK and RTC_LOG."

This reverts commit 6b6f537e839ee32d72b69f1f6dc3747fbd12b3eb.

Reason for revert: AddressSanitizer: stack-use-after-return third_party/webrtc/files/stable/webrtc/rtc_base/logging.cc:214:17 in rtc::LogMessage::~LogMessage()

Original change's description:
> Adding support for enum class in RTC_CHECK and RTC_LOG.
> 
> Enum class types are by design not convertible to arithmetic types.
> As a result they are currently not supported in RTC_CHECK and RTC_LOG.
> The current workaround was to use something like RTC_CHECK(v1 == v2)
> instead of RTC_CHECK_EQ(v1, v2).
> This change adds support for any enum class type by converting it to the
> underlying type.
> 
> Bug: webrtc:10418
> Change-Id: I59e6608e6a97a4cc007c903f8e021a58d4c49ff8
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128202
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Commit-Queue: Amit Hilbuch <amithi@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#27166}

TBR=kwiberg@webrtc.org,amithi@webrtc.org

Change-Id: I515087dbbebd6bf8cbebd8f9944fd61a20f758db
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10418
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128540
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27168}
diff --git a/rtc_base/checks.h b/rtc_base/checks.h
index b351ad2..2694258 100644
--- a/rtc_base/checks.h
+++ b/rtc_base/checks.h
@@ -168,16 +168,6 @@
   return {x};
 }
 
-// The enum class types are not implicitly convertible to arithmetic types.
-template <
-    typename T,
-    typename std::enable_if<std::is_enum<T>::value &&
-                            !std::is_arithmetic<T>::value>::type* = nullptr>
-inline decltype(MakeVal(std::declval<typename std::underlying_type<T>::type>()))
-MakeVal(T x) {
-  return {static_cast<typename std::underlying_type<T>::type>(x)};
-}
-
 // Ephemeral type that represents the result of the logging << operator.
 template <typename... Ts>
 class LogStreamer;
@@ -186,18 +176,18 @@
 template <>
 class LogStreamer<> final {
  public:
-  template <typename U,
-            typename std::enable_if<std::is_arithmetic<U>::value ||
-                                    std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>()))> operator<<(
       U arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>()))>(MakeVal(arg),
                                                              this);
   }
 
-  template <typename U,
-            typename std::enable_if<!std::is_arithmetic<U>::value &&
-                                    !std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<!std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>()))> operator<<(
       const U& arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>()))>(MakeVal(arg),
@@ -232,18 +222,18 @@
   RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer<Ts...>* prior)
       : arg_(arg), prior_(prior) {}
 
-  template <typename U,
-            typename std::enable_if<std::is_arithmetic<U>::value ||
-                                    std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>
   operator<<(U arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>(
         MakeVal(arg), this);
   }
 
-  template <typename U,
-            typename std::enable_if<!std::is_arithmetic<U>::value &&
-                                    !std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<!std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>
   operator<<(const U& arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>(
diff --git a/rtc_base/logging.h b/rtc_base/logging.h
index 3f48eeb..5cd4f72 100644
--- a/rtc_base/logging.h
+++ b/rtc_base/logging.h
@@ -248,16 +248,6 @@
   return {x};
 }
 
-// The enum class types are not implicitly convertible to arithmetic types.
-template <
-    typename T,
-    typename std::enable_if<std::is_enum<T>::value &&
-                            !std::is_arithmetic<T>::value>::type* = nullptr>
-inline decltype(MakeVal(std::declval<typename std::underlying_type<T>::type>()))
-MakeVal(T x) {
-  return {static_cast<typename std::underlying_type<T>::type>(x)};
-}
-
 #ifdef WEBRTC_ANDROID
 inline Val<LogArgType::kLogMetadataTag, LogMetadataTag> MakeVal(
     const LogMetadataTag& x) {
@@ -295,18 +285,18 @@
 template <>
 class LogStreamer<> final {
  public:
-  template <typename U,
-            typename std::enable_if<std::is_arithmetic<U>::value ||
-                                    std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>()))> operator<<(
       U arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>()))>(MakeVal(arg),
                                                              this);
   }
 
-  template <typename U,
-            typename std::enable_if<!std::is_arithmetic<U>::value &&
-                                    !std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<!std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>()))> operator<<(
       const U& arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>()))>(MakeVal(arg),
@@ -328,18 +318,18 @@
   RTC_FORCE_INLINE LogStreamer(T arg, const LogStreamer<Ts...>* prior)
       : arg_(arg), prior_(prior) {}
 
-  template <typename U,
-            typename std::enable_if<std::is_arithmetic<U>::value ||
-                                    std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>
   operator<<(U arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>(
         MakeVal(arg), this);
   }
 
-  template <typename U,
-            typename std::enable_if<!std::is_arithmetic<U>::value &&
-                                    !std::is_enum<U>::value>::type* = nullptr>
+  template <
+      typename U,
+      typename std::enable_if<!std::is_arithmetic<U>::value>::type* = nullptr>
   RTC_FORCE_INLINE LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>
   operator<<(const U& arg) const {
     return LogStreamer<decltype(MakeVal(std::declval<U>())), T, Ts...>(
diff --git a/rtc_base/logging_unittest.cc b/rtc_base/logging_unittest.cc
index 4f05ac0..e49440d 100644
--- a/rtc_base/logging_unittest.cc
+++ b/rtc_base/logging_unittest.cc
@@ -368,16 +368,4 @@
                    << " total bytes logged: " << str.size();
 }
 
-TEST(LogTest, EnumsAreSupported) {
-  enum class TestEnum { kValue0 = 0, kValue1 = 1 };
-  std::string str;
-  LogSinkImpl<StringStream> stream(&str);
-  LogMessage::AddLogToStream(&stream, LS_INFO);
-  RTC_LOG(LS_INFO) << "[" << TestEnum::kValue0 << "]";
-  EXPECT_NE(std::string::npos, str.find("[0]"));
-  EXPECT_EQ(std::string::npos, str.find("[1]"));
-  RTC_LOG(LS_INFO) << "[" << TestEnum::kValue1 << "]";
-  EXPECT_NE(std::string::npos, str.find("[1]"));
-}
-
 }  // namespace rtc