From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 58DAF386182B; Tue, 30 Mar 2021 19:14:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 58DAF386182B From: "mpolacek at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/99831] ICE: in reshape_init, at cp/decl.c:6720 Date: Tue, 30 Mar 2021 19:14:29 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 11.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: mpolacek at gcc dot gnu.org X-Bugzilla-Status: NEW 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: keywords Message-ID: In-Reply-To: References: 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 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Mar 2021 19:14:29 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D99831 Marek Polacek changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|needs-reduction | --- Comment #5 from Marek Polacek --- And here's a reduced version of there original test. Will try to reduce further. template struct remove_cv { using type =3D int; }; template using __remove_cvref_t =3D typename remove_cv<_Tp>:= :type; template using remove_cvref_t =3D __remove_cvref_t<_Tp>; template concept derived_from =3D __is_base_of(_Base, _Derived); template struct iterator_traits; struct input_iterator_tag; namespace __detail { template struct __iter_traits_impl { using type =3D iterator_traits; }; template using __iter_traits =3D typename __iter_traits_impl<_Iter>::type; template using __iter_diff_t =3D typename __iter_traits<_Tp>::difference_type; } // namespace __detail template using iter_difference_t =3D __detail::__iter_diff_t>; namespace __detail { template struct __iter_concept_impl; template requires requires { typename _Iter; } struct __iter_concept_impl<_Iter> { using type =3D typename __iter_traits<_Iter>::iterator_concept; }; template using __iter_concept =3D typename __iter_concept_impl<_Iter>::type; } // namespace __detail template concept weakly_incrementable =3D requires(_Iter _= _i) { __i; }; template concept input_iterator =3D derived_from<__detail::__iter_concept<_Iter>, input_iterator_tag>; template struct iterator_traits { using iterator_concept =3D input_iterator_tag; using difference_type =3D int; }; template struct in_out_result {}; template using copy_n_result =3D in_out_result<_O= ut>; struct { template constexpr copy_n_result<_Iter, _Out> operator()(_Iter __first, iter_difference_t<_Iter> __n, _Out __result) { for (; __n; --__n, ++__result) *__result =3D *__first; return {}; } } copy_n; template struct StringLiteral { constexpr StringLiteral(const char (&str)[N]) { copy_n(str, N, value); } char value[N]; }; template struct string { constexpr bool operator=3D=3D(const string &) const =3D default; }; template void operator+(string) { char value[1]; StringLiteral{value}; } static_assert(string<"hello, world">{} =3D=3D string<"hello" ", world">{}); static_assert(string<"a rose is a rose is a rose">{} =3D=3D string<"a rose" " is " "a rose" " is " "a rose">{})= ;=