From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 69E083858412; Mon, 24 Oct 2022 15:36:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 69E083858412 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666625761; bh=MPhygrWaWdeDU4xPUDu+bs4puFjY1AjYRe+/tq/QsfA=; h=From:To:Subject:Date:From; b=NKq6DPcD5O5wz1xMQyuqIvvbTbLoobEK1mdsQGiX94PjOYMselH+y3rfcOdGOHziY KcO72rFzAJwmtrmoahjxbGlVabrC+XsdBnF+vH9XpTaN7lmheJUTtP1R+YHeUIWUTW BiHbxB7frgZTm0DFpb71dWgWUVwJoPKyLVVqnp5k= From: "johelegp at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/107378] New: `get_if` implementation "is not a constant expression" Date: Mon, 24 Oct 2022 15:36:00 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: libstdc++ X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: rejects-valid X-Bugzilla-Severity: normal X-Bugzilla-Who: johelegp at gmail dot com X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status keywords bug_severity priority component assigned_to reporter cc target_milestone Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D107378 Bug ID: 107378 Summary: `get_if` implementation "is not a constant expression" Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: rejects-valid Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: johelegp at gmail dot com CC: johelegp at gmail dot com Target Milestone: --- See https://godbolt.org/z/cf1T7q6Tj. ```C++ #include static_assert([v =3D std::variant{}] { return get_if<0>(&v); }()); ``` ``` :2:67: error: non-constant condition for static assertion 2 | static_assert([v =3D std::variant{}] { return get_if<0>(&v); = }()); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~ In file included from :1: :2:67: in 'constexpr' expansion of '{std::variant{std::__detail::__variant::_Variant_bas= e{std::__detail::__variant::_Move_assign_base{std::__detail::__variant::_Copy_assign_base{std::__detail::__variant::_Move_ctor_base{std::__detail::__variant::_Copy_ctor_base{std::__detail::__variant::_Variant_storage{std::__detail::__variant::_Variadic_union{std::__detail::__vari= ant::_Uninitialized{0}}, 0}}}}}}}}.()' :2:60: in 'constexpr' expansion of 'std::get_if<0, int*>((& v))' /opt/compiler-explorer/gcc-trunk-20221024/include/c++/13.0.0/variant:1183:1= 1: error: '((&.::__v) !=3D 0)' is not a constant expressi= on 1183 | if (__ptr && __ptr->index() =3D=3D _Np) | ^~~~~ Compiler returned: 1 ```=