https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117889
Bug ID: 117889
Summary: [15 regression] Failure to build qtwebengine-6.8.1
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Keywords: rejects-valid
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: sjames at gcc dot gnu.org
Target Milestone: ---
Building qtwebengine-6.8.1 with GCC 15 gives:
```
[...]
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/type_traits: In
substitution of ‘template<class _Up> requires !(is_same_v<std::optional<_Tp>,
typename std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const
_Up&>) && (__construct_from_contained_value<_Up, typename std::remove_cv<
<template-parameter-1-1> >::type>) constexpr
std::optional<blink::LayoutUnit>::optional(const std::optional<_Tp>&) [with _Up
= blink::LayoutUnit]’:
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/type_traits:1143:25:
required by substitution of ‘template<class _Tp, class ... _Args> using
std::__is_constructible_impl = std::__bool_constant<__is_constructible(_Tp,
_Args ...)> [with _Tp = blink::LayoutUnit; _Args =
{std::optional<blink::LayoutUnit>&}]’
1143 | = __bool_constant<__is_constructible(_Tp, _Args...)>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/type_traits:1148:12:
required from ‘struct std::is_constructible<blink::LayoutUnit,
std::optional<blink::LayoutUnit>&>’
1148 | struct is_constructible
| ^~~~~~~~~~~~~~~~
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/type_traits:181:35:
required by substitution of ‘template<class ... _Bn>
std::__detail::__first_t<std::integral_constant<bool, false>, typename
std::enable_if<(!(bool)(_Bn::value)), void>::type ...>
std::__detail::__or_fn(int) [with _Bn =
{std::is_constructible<blink::LayoutUnit, std::optional<blink::LayoutUnit>&>,
std::is_convertible<std::optional<blink::LayoutUnit>&, blink::LayoutUnit>,
std::is_constructible<blink::LayoutUnit, std::optional<blink::LayoutUnit> >,
std::is_convertible<std::optional<blink::LayoutUnit>, blink::LayoutUnit>,
std::is_constructible<blink::LayoutUnit, const
std::optional<blink::LayoutUnit>&>, std::is_convertible<const
std::optional<blink::LayoutUnit>&, blink::LayoutUnit>,
std::is_constructible<blink::LayoutUnit, const std::optional<blink::LayoutUnit>
>, std::is_convertible<const std::optional<blink::LayoutUnit>,
blink::LayoutUnit>}]’
181 |
__enable_if_t<!bool(_Bn::value)>...>;
| ^~~~~
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/type_traits:199:41:
required from ‘struct std::__or_<std::is_constructible<blink::LayoutUnit,
std::optional<blink::LayoutUnit>&>,
std::is_convertible<std::optional<blink::LayoutUnit>&, blink::LayoutUnit>,
std::is_constructible<blink::LayoutUnit, std::optional<blink::LayoutUnit> >,
std::is_convertible<std::optional<blink::LayoutUnit>, blink::LayoutUnit>,
std::is_constructible<blink::LayoutUnit, const
std::optional<blink::LayoutUnit>&>, std::is_convertible<const
std::optional<blink::LayoutUnit>&, blink::LayoutUnit>,
std::is_constructible<blink::LayoutUnit, const std::optional<blink::LayoutUnit>
>, std::is_convertible<const std::optional<blink::LayoutUnit>,
blink::LayoutUnit> >’
199 | : decltype(__detail::__or_fn<_Bn...>(0))
| ~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/optional:823:45:
required from ‘constexpr const bool
std::optional<blink::LayoutUnit>::__construct_from_contained_value<blink::LayoutUnit,
blink::LayoutUnit>’
823 | = !__converts_from_optional<_Tp, _From>::value;
| ^~~~~
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/optional:881:7:
required by substitution of ‘template<class _Up> requires
!(is_same_v<std::optional<_Tp>, typename std::remove_cvref<_It2>::type>) &&
(is_constructible_v<_Tp, const _Up&>) && (__construct_from_contained_value<_Up,
typename std::remove_cv< <template-parameter-1-1> >::type>) constexpr
std::optional<blink::LayoutUnit>::optional(const std::optional<_Tp>&) [with _Up
= blink::LayoutUnit]’
881 | && __construct_from_contained_value<_Up>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../../qtwebengine-everywhere-src-6.8.1/src/3rdparty/chromium/third_party/blink/renderer/core/layout/table/table_constraint_space_data.h:49:11:
required from here
49 | baseline(baseline),
| ^~~~~~~~~~~~~~~~~~
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/optional:883:2:
required by the constraints of ‘template<class _Tp> template<class _Up>
requires !(is_same_v<std::optional<_Tp>, typename
std::remove_cvref<_It2>::type>) && (is_constructible_v<_Tp, const _Up&>) &&
(__construct_from_contained_value<_Up, typename std::remove_cv<
<template-parameter-1-1> >::type>) constexpr std::optional<_Tp>::optional(const
std::optional<_From>&)’
/usr/lib/gcc/aarch64-unknown-linux-gnu/15/include/g++-v15/optional:881:14:
error: satisfaction of atomic constraint ‘__construct_from_contained_value<_Up,
typename std::remove_cv< <template-parameter-1-1> >::type> [with _Tp = _Tp; _Up
= _Up]’ depends on itself
881 | && __construct_from_contained_value<_Up>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[...]
```
Building with 14 works, as does using 14-preprocessed sources with 15. I'll
attach both.