Tested x86_64-linux. Pushed to trunk. Will backport to gcc-12 too. -- >8 --
The presence of a template-head on this constructor is a copy & paste error from the primary template. libstdc++-v3/ChangeLog: PR libstdc++/109182 * include/std/expected (expected<void>::expected(in_place_t)): Remove template-head. --- libstdc++-v3/include/std/expected | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libstdc++-v3/include/std/expected b/libstdc++-v3/include/std/expected index 9a52e2574bf..567a5195e8d 100644 --- a/libstdc++-v3/include/std/expected +++ b/libstdc++-v3/include/std/expected @@ -1302,11 +1302,10 @@ namespace __expected : _M_unex(std::move(__u).error()), _M_has_value(false) { } - template<typename... _Args> - constexpr explicit - expected(in_place_t) noexcept - : expected() - { } + constexpr explicit + expected(in_place_t) noexcept + : expected() + { } template<typename... _Args> requires is_constructible_v<_Er, _Args...> -- 2.39.2