From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id CA2163857C7F; Thu, 13 May 2021 02:16:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CA2163857C7F From: "ppalka at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug libstdc++/100577] New: [11/12 Regression] Unhelpful diagnostics for ill-formed call to partially applied range adaptor object Date: Thu, 13 May 2021 02:16:25 +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: 11.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: ppalka at gcc dot gnu.org 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 bug_severity priority component assigned_to reporter 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 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: Thu, 13 May 2021 02:16:25 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D100577 Bug ID: 100577 Summary: [11/12 Regression] Unhelpful diagnostics for ill-formed call to partially applied range adaptor object Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ Assignee: unassigned at gcc dot gnu.org Reporter: ppalka at gcc dot gnu.org Target Milestone: --- For the following invalid testcase: #include int main() { extern int x[100]; std::views::take(nullptr)(x); } GCC 10 emits the following errors: In file included from :1:=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20 /usr/include/c++/10/ranges: In instantiation of =E2=80=98std::ranges::views:: [with _Range =3D int= (&)[100]; _Tp =3D std::nullptr_t]=E2=80=99:=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 /usr/include/c++/10/ranges:1142:27: required from =E2=80=98std::ranges::views::__adaptor::_RangeAdaptor<_Callable>::operator(= )<{std::nullptr_t}>:: [with _Range =3D int (&)[100]]=E2=80=99=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20 /usr/include/c++/10/ranges:1162:44: required from =E2=80=98constexpr auto std::ranges::views::__adaptor::_RangeAdaptorClosure<_Callable>::operator()(= _Range&&) const [with _Range =3D int (&)[100]; _Callable =3D std::ranges ::views::__adaptor::_RangeAdaptor<_Callable>::operator()<{std::nullptr_t}>:= :]=E2=80=99=20 :5:30: required from here=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20 /usr/include/c++/10/ranges:2148:68: error: class template argument deduction failed:=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20 2148 | return take_view{std::forward<_Range>(__r), std::forward<_Tp>(__n)= };=20=20=20 | = ^=20=20=20=20 /usr/include/c++/10/ranges:2148:68: error: no matching function for call to =E2=80=98take_view(int [100], std::nullptr_t)=E2=80=99=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20 [...] /usr/include/c++/10/ranges:2140:5: note: candidate: =E2=80=98std::ranges::take_view(_Range&&, std::ranges::range_difference_t<_= Range>)-> std::ranges::take_view > [with _Range =3D= int (&)[ 100]; std::ranges::views::all_t<_Range> =3D std::ranges::ref_view; std::ranges::range_difference_t<_Range> =3D long int]=E2=80=99=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 2140 | take_view(_Range&&, range_difference_t<_Range>)=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 | ^~~~~~~~~=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 Whereas GCC 11, after r11-8053, emits an almost useless error: :5:28: error: use of deleted function =E2=80=98constexpr auto std::ranges::views::__adaptor::_Partial<_Adaptor, _Arg>::operator()(_Range&= &) const && [with _Range =3D int (&)[100]; _Adaptor =3D std::ranges::views::_T= ake; _Arg =3D std::nullptr_t]=E2=80=99 In file included from :1: /home/patrick/code/gcc-master/libstdc++-v3/include/std/ranges:865:9: note: declared here 865 | operator()(_Range&& __r) const && =3D delete; | ^~~~~~~~=