4e6c6ef
diff -up chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/DEPS.jdp chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/DEPS
4e6c6ef
--- chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/DEPS.jdp	2018-03-07 13:54:42.653286576 -0500
4e6c6ef
+++ chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/DEPS	2018-03-07 13:55:00.973903591 -0500
4e6c6ef
@@ -16,6 +16,7 @@ include_rules = [
4e6c6ef
     "+base/process/process_metrics.h",
4e6c6ef
     "+base/rand_util.h",
4e6c6ef
     "+base/strings",
4e6c6ef
+    "+base/template_util.h",
4e6c6ef
     "+base/threading/thread_checker.h",
4e6c6ef
     "+base/time/time.h",
4e6c6ef
     "+base/tuple.h",
4e6c6ef
diff -up chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/Optional.h.jdp chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/Optional.h
4e6c6ef
--- chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/Optional.h.jdp	2018-03-07 13:56:29.053062331 -0500
4e6c6ef
+++ chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/Optional.h	2018-03-07 13:56:36.595904651 -0500
4e6c6ef
@@ -6,6 +6,7 @@
4e6c6ef
 #define Optional_h
4e6c6ef
 
4e6c6ef
 #include "base/optional.h"
4e6c6ef
+#include "platform/wtf/TemplateUtil.h"
4e6c6ef
 #include "platform/wtf/TypeTraits.h"
4e6c6ef
 
4e6c6ef
 namespace WTF {
4e6c6ef
diff -up chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/TemplateUtil.h.jdp chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/TemplateUtil.h
4e6c6ef
--- chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/TemplateUtil.h.jdp	2018-03-07 13:56:47.356679702 -0500
4e6c6ef
+++ chromium-65.0.3325.146/third_party/WebKit/Source/platform/wtf/TemplateUtil.h	2018-03-07 13:57:41.769542223 -0500
4e6c6ef
@@ -0,0 +1,28 @@
4e6c6ef
+// Copyright 2018 The Chromium Authors. All rights reserved.
4e6c6ef
+// Use of this source code is governed by a BSD-style license that can be
4e6c6ef
+// found in the LICENSE file.
4e6c6ef
+
4e6c6ef
+#ifndef TemplateUtil_h
4e6c6ef
+#define TemplateUtil_h
4e6c6ef
+
4e6c6ef
+#include "base/template_util.h"
4e6c6ef
+#include "platform/wtf/Vector.h"
4e6c6ef
+
4e6c6ef
+namespace base {
4e6c6ef
+
4e6c6ef
+#if defined(__GNUC__) && !defined(__clang__) && __GNUC__ <= 7
4e6c6ef
+// Workaround for g++7 and earlier family.
4e6c6ef
+// Due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80654, without this
4e6c6ef
+// Optional<WTF::Vector<T>> where T is non-copyable causes a compile error.
4e6c6ef
+// As we know it is not trivially copy constructible, explicitly declare so.
4e6c6ef
+//
4e6c6ef
+// It completes the declaration in base/template_util.h that was provided
4e6c6ef
+// for std::vector
4e6c6ef
+template <typename T>
4e6c6ef
+struct is_trivially_copy_constructible<WTF::Vector<T>> : std::false_type {};
4e6c6ef
+#endif
4e6c6ef
+
4e6c6ef
+}  // namespace base
4e6c6ef
+
4e6c6ef
+#endif  // TemplateUtil_h
4e6c6ef
+