more C++11 type handling (enable_if)

This commit is contained in:
Tom Callaway 2017-10-25 09:17:17 -04:00
parent f6767a1977
commit 2180bdba87
2 changed files with 94 additions and 4 deletions

View File

@ -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,

View File

@ -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