commit 2180bdba879cfe15ed13fe549a5e69d8bcef00e8
Author: Tom Callaway <spot(a)fedoraproject.org>
Date: Wed Oct 25 09:17:17 2017 -0400
more C++11 type handling (enable_if)
....3202.62-epel7-c++11-decay-enable_if-type.patch | 96 +++++++++++++++++++++-
chromium.spec | 2 +-
2 files changed, 94 insertions(+), 4 deletions(-)
---
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 af0c5a7..0e651c6 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 <typename T>
auto Unwrap(T&& o) ->
decltype(Unwrapper<T>::Unwrap(std::forward<T>(o))) {
+@@ -438,7 +438,7 @@ static inline internal::OwnedWrapper<T>
+ // 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 <typename T,
+- std::enable_if_t<!std::is_lvalue_reference<T>::value>* =
nullptr>
++ typename
std::enable_if<!std::is_lvalue_reference<T>::value>::type* = nullptr>
+ static inline internal::PassedWrapper<T> Passed(T&& scoper) {
+ return internal::PassedWrapper<T>(std::move(scoper));
+ }
+@@ -537,9 +537,9 @@ template <typename Functor, typename...
+ struct CallbackCancellationTraits<
+ Functor,
+ std::tuple<BoundArgs...>,
+- std::enable_if_t<
++ typename std::enable_if<
+ internal::IsWeakMethod<internal::FunctorTraits<Functor>::is_method,
+- BoundArgs...>::value>> {
++ BoundArgs...>::value>::type> {
+ static constexpr bool is_cancellable = true;
+
+ template <typename Receiver, typename... Args>
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 <typename Functor>
+ struct FunctorTraits<Functor,
+-
std::enable_if_t<IsConvertibleToRunType<Functor>::value>> {
++ typename
std::enable_if<IsConvertibleToRunType<Functor>::value>::type> {
+ using RunType = ExtractCallableRunType<Functor>;
+ static constexpr bool is_method = false;
+ static constexpr bool is_nullable = false;
@@ -256,7 +256,7 @@ struct FunctorTraits<RepeatingCallback<R
};
@@ -96,6 +126,22 @@ diff -up chromium-62.0.3202.62/base/bind_internal.h.epel7-c++11
chromium-62.0.32
static constexpr bool is_weak_call =
IsWeakMethod<is_method,
std::tuple_element_t<indices, DecayedArgsTuple>...>();
+@@ -383,13 +383,13 @@ struct BindTypeHelper {
+ };
+
+ template <typename Functor>
+-std::enable_if_t<FunctorTraits<Functor>::is_nullable, bool> IsNull(
++typename std::enable_if<FunctorTraits<Functor>::is_nullable, bool>::type
IsNull(
+ const Functor& functor) {
+ return !functor;
+ }
+
+ template <typename Functor>
+-std::enable_if_t<!FunctorTraits<Functor>::is_nullable, bool> IsNull(
++typename std::enable_if<!FunctorTraits<Functor>::is_nullable, bool>::type
IsNull(
+ const Functor&) {
+ return false;
+ }
@@ -479,33 +479,33 @@ struct MakeBindStateTypeImpl;
template <typename Functor, typename... BoundArgs>
@@ -139,7 +185,7 @@ diff -up chromium-62.0.3202.62/base/bind_internal.h.epel7-c++11
chromium-62.0.32
template <typename Functor, typename... BoundArgs>
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 <typename T>
struct IsSpanImpl<span<T>> : 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 <typename From, typename To>
using IsLegalSpanConversion = std::is_convertible<From*, To*>;
+@@ -51,7 +51,7 @@ using ContainerHasIntegralSize =
+
+ template <typename From, typename To>
+ using EnableIfLegalSpanConversion =
+- std::enable_if_t<IsLegalSpanConversion<From, To>::value>;
++ typename std::enable_if<IsLegalSpanConversion<From, To>::value>::type;
+
+ // SFINAE check if Container can be converted to a span<T>. Note that the
+ // implementation details of this check differ slightly from the requirements in
+@@ -67,18 +67,18 @@ using EnableIfLegalSpanConversion =
+ // container.
+ template <typename Container, typename T>
+ using EnableIfSpanCompatibleContainer =
+- std::enable_if_t<!internal::IsSpan<Container>::value &&
++ typename std::enable_if<!internal::IsSpan<Container>::value &&
+ !internal::IsStdArray<Container>::value &&
+ ContainerHasConvertibleData<Container, T>::value &&
+- ContainerHasIntegralSize<Container>::value>;
++ ContainerHasIntegralSize<Container>::value>::type;
+
+ template <typename Container, typename T>
+ using EnableIfConstSpanCompatibleContainer =
+- std::enable_if_t<std::is_const<T>::value &&
++ typename std::enable_if<std::is_const<T>::value &&
+ !internal::IsSpan<Container>::value &&
+ !internal::IsStdArray<Container>::value &&
+ ContainerHasConvertibleData<Container, T>::value &&
+- ContainerHasIntegralSize<Container>::value>;
++ ContainerHasIntegralSize<Container>::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 <typename ObjT, typename P, typename... Args, typename Tuple>
+-std::enable_if_t<sizeof...(Args) ==
std::tuple_size<std::decay_t<Tuple>>::value>
++typename std::enable_if<sizeof...(Args) ==
std::tuple_size<std::decay_t<Tuple>>::value>::type
+ DispatchToMethod(ObjT* obj,
+ void (ObjT::*method)(P*, Args...),
+ P* parameter,
diff --git a/chromium.spec b/chromium.spec
index 4ae1ecb..14d6ef4 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