: _Base(std::in_place, std::forward<_Up>(__t)) { }
template<typename _Up>
- requires (!is_same_v<optional, remove_cvref_t<_Up>>)
+ requires (!is_same_v<_Tp, _Up>)
&& is_constructible_v<_Tp, const _Up&>
&& __construct_from_contained_value<_Up>
constexpr explicit(!is_convertible_v<const _Up&, _Tp>)
}
template<typename _Up>
- requires (!is_same_v<optional, remove_cvref_t<_Up>>)
+ requires (!is_same_v<_Tp, _Up>)
&& is_constructible_v<_Tp, _Up>
&& __construct_from_contained_value<_Up>
constexpr explicit(!is_convertible_v<_Up, _Tp>)
+++ /dev/null
-// { dg-do compile { target c++17 } }
-
-// PR 117858 std::optional with a constructor template<typename T> ctor(T)
-
-#include <optional>
-
-struct Focus
-{
- template<class T>
- Focus(T newValue) { }
-};
-
-void g(std::optional<Focus> f)
-{
- f = f;
- f = std::move(f);
-}
--- /dev/null
+// { dg-do compile { target c++17 } }
+
+// PR 117858 std::optional with a constructor template<typename T> ctor(T)
+// PR 117889 Failure to build qtwebengine-6.8.1
+
+#include <optional>
+
+struct Focus
+{
+ template<class T> Focus(T) { }
+};
+
+void test_pr117858(std::optional<Focus>& f)
+{
+ f = f;
+ f = std::move(f);
+}
+
+void test_pr117889(std::optional<Focus>& f)
+{
+ std::optional<Focus> f2 = f;
+ std::optional<Focus> f3 = std::move(f);
+}