From 2180bdba879cfe15ed13fe549a5e69d8bcef00e8 Mon Sep 17 00:00:00 2001 From: Tom Callaway Date: Wed, 25 Oct 2017 09:17:17 -0400 Subject: [PATCH] more C++11 type handling (enable_if) --- ....62-epel7-c++11-decay-enable_if-type.patch | 96 ++++++++++++++++++- chromium.spec | 2 +- 2 files changed, 94 insertions(+), 4 deletions(-) rename chromium-62.0.3202.62-epel7-c++11-decay-type.patch => chromium-62.0.3202.62-epel7-c++11-decay-enable_if-type.patch (61%) diff --git a/chromium-62.0.3202.62-epel7-c++11-decay-type.patch b/chromium-62.0.3202.62-epel7-c++11-decay-enable_if-type.patch similarity index 61% rename from chromium-62.0.3202.62-epel7-c++11-decay-type.patch rename to chromium-62.0.3202.62-epel7-c++11-decay-enable_if-type.patch index af0c5a79..0e651c61 100644 --- a/chromium-62.0.3202.62-epel7-c++11-decay-type.patch +++ b/chromium-62.0.3202.62-epel7-c++11-decay-enable_if-type.patch @@ -1,6 +1,6 @@ diff -up chromium-62.0.3202.62/base/bind_helpers.h.epel7-c++11 chromium-62.0.3202.62/base/bind_helpers.h --- chromium-62.0.3202.62/base/bind_helpers.h.epel7-c++11 2017-10-25 08:50:15.692276363 -0400 -+++ chromium-62.0.3202.62/base/bind_helpers.h 2017-10-25 08:50:39.977611740 -0400 ++++ chromium-62.0.3202.62/base/bind_helpers.h 2017-10-25 09:12:15.889484145 -0400 @@ -282,7 +282,7 @@ class PassedWrapper { }; @@ -10,6 +10,27 @@ diff -up chromium-62.0.3202.62/base/bind_helpers.h.epel7-c++11 chromium-62.0.320 template auto Unwrap(T&& o) -> decltype(Unwrapper::Unwrap(std::forward(o))) { +@@ -438,7 +438,7 @@ static inline internal::OwnedWrapper + // Both versions of Passed() prevent T from being an lvalue reference. The first + // via use of enable_if, and the second takes a T* which will not bind to T&. + template ::value>* = nullptr> ++ typename std::enable_if::value>::type* = nullptr> + static inline internal::PassedWrapper Passed(T&& scoper) { + return internal::PassedWrapper(std::move(scoper)); + } +@@ -537,9 +537,9 @@ template , +- std::enable_if_t< ++ typename std::enable_if< + internal::IsWeakMethod::is_method, +- BoundArgs...>::value>> { ++ BoundArgs...>::value>::type> { + static constexpr bool is_cancellable = true; + + template diff -up chromium-62.0.3202.62/base/bind.h.epel7-c++11 chromium-62.0.3202.62/base/bind.h --- chromium-62.0.3202.62/base/bind.h.epel7-c++11 2017-10-25 08:55:22.603877014 -0400 +++ chromium-62.0.3202.62/base/bind.h 2017-10-25 08:56:41.636714097 -0400 @@ -77,7 +98,16 @@ diff -up chromium-62.0.3202.62/base/bind.h.epel7-c++11 chromium-62.0.3202.62/bas // This block checks if each |args| matches to the corresponding params of the diff -up chromium-62.0.3202.62/base/bind_internal.h.epel7-c++11 chromium-62.0.3202.62/base/bind_internal.h --- chromium-62.0.3202.62/base/bind_internal.h.epel7-c++11 2017-10-25 08:52:20.018873878 -0400 -+++ chromium-62.0.3202.62/base/bind_internal.h 2017-10-25 08:55:07.779282724 -0400 ++++ chromium-62.0.3202.62/base/bind_internal.h 2017-10-25 09:14:48.526096108 -0400 +@@ -125,7 +125,7 @@ struct FunctorTraits; + // to the function type while capturing lambdas can't. + template + struct FunctorTraits::value>> { ++ typename std::enable_if::value>::type> { + using RunType = ExtractCallableRunType; + static constexpr bool is_method = false; + static constexpr bool is_nullable = false; @@ -256,7 +256,7 @@ struct FunctorTraits...>(); +@@ -383,13 +383,13 @@ struct BindTypeHelper { + }; + + template +-std::enable_if_t::is_nullable, bool> IsNull( ++typename std::enable_if::is_nullable, bool>::type IsNull( + const Functor& functor) { + return !functor; + } + + template +-std::enable_if_t::is_nullable, bool> IsNull( ++typename std::enable_if::is_nullable, bool>::type IsNull( + const Functor&) { + return false; + } @@ -479,33 +479,33 @@ struct MakeBindStateTypeImpl; template @@ -139,7 +185,7 @@ diff -up chromium-62.0.3202.62/base/bind_internal.h.epel7-c++11 chromium-62.0.32 template diff -up chromium-62.0.3202.62/base/containers/span.h.epel7-c++11 chromium-62.0.3202.62/base/containers/span.h --- chromium-62.0.3202.62/base/containers/span.h.epel7-c++11 2017-10-25 08:51:25.260372472 -0400 -+++ chromium-62.0.3202.62/base/containers/span.h 2017-10-25 08:52:07.597213826 -0400 ++++ chromium-62.0.3202.62/base/containers/span.h 2017-10-25 09:13:53.035964265 -0400 @@ -27,7 +27,7 @@ template struct IsSpanImpl> : std::true_type {}; @@ -158,3 +204,47 @@ diff -up chromium-62.0.3202.62/base/containers/span.h.epel7-c++11 chromium-62.0. template using IsLegalSpanConversion = std::is_convertible; +@@ -51,7 +51,7 @@ using ContainerHasIntegralSize = + + template + using EnableIfLegalSpanConversion = +- std::enable_if_t::value>; ++ typename std::enable_if::value>::type; + + // SFINAE check if Container can be converted to a span. Note that the + // implementation details of this check differ slightly from the requirements in +@@ -67,18 +67,18 @@ using EnableIfLegalSpanConversion = + // container. + template + using EnableIfSpanCompatibleContainer = +- std::enable_if_t::value && ++ typename std::enable_if::value && + !internal::IsStdArray::value && + ContainerHasConvertibleData::value && +- ContainerHasIntegralSize::value>; ++ ContainerHasIntegralSize::value>::type; + + template + using EnableIfConstSpanCompatibleContainer = +- std::enable_if_t::value && ++ typename std::enable_if::value && + !internal::IsSpan::value && + !internal::IsStdArray::value && + ContainerHasConvertibleData::value && +- ContainerHasIntegralSize::value>; ++ ContainerHasIntegralSize::value>::type; + + } // namespace internal + +diff -up chromium-62.0.3202.62/ipc/ipc_message_templates.h.epel7-c++11 chromium-62.0.3202.62/ipc/ipc_message_templates.h +--- chromium-62.0.3202.62/ipc/ipc_message_templates.h.epel7-c++11 2017-10-25 09:15:02.382879317 -0400 ++++ chromium-62.0.3202.62/ipc/ipc_message_templates.h 2017-10-25 09:15:36.609343836 -0400 +@@ -67,7 +67,7 @@ void DispatchToMethodImpl(ObjT* obj, + // The following function is for async IPCs which have a dispatcher with an + // extra parameter specified using IPC_BEGIN_MESSAGE_MAP_WITH_PARAM. + template +-std::enable_if_t>::value> ++typename std::enable_if>::value>::type + DispatchToMethod(ObjT* obj, + void (ObjT::*method)(P*, Args...), + P* parameter, diff --git a/chromium.spec b/chromium.spec index 4ae1ecb1..14d6ef43 100644 --- a/chromium.spec +++ b/chromium.spec @@ -218,7 +218,7 @@ Patch63: chromium-gn-bootstrap-r17.patch Patch64: chromium-62.0.3202.62-correct-cplusplus-check.patch # epel7 does not know about c++14 Patch65: chromium-62.0.3202.62-epel7-noc++14.patch -Patch66: chromium-62.0.3202.62-epel7-c++11-decay-type.patch +Patch66: chromium-62.0.3202.62-epel7-c++11-decay-enable_if-type.patch ### Chromium Tests Patches ### Patch100: chromium-46.0.2490.86-use_system_opus.patch