From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5418 invoked by alias); 12 Aug 2014 00:26:14 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Received: (qmail 5379 invoked by uid 48); 12 Aug 2014 00:26:02 -0000 From: "ville.voutilainen at gmail dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/62101] New: deleted definitions of friend functions are rejected Date: Tue, 12 Aug 2014 00:26:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 4.10.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: ville.voutilainen at gmail dot com X-Bugzilla-Status: UNCONFIRMED 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 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-SW-Source: 2014-08/txt/msg00715.txt.bz2 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D62101 Bug ID: 62101 Summary: deleted definitions of friend functions are rejected Product: gcc Version: 4.10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ville.voutilainen at gmail dot com Test: struct X { friend void f(X, int) =3D delete; friend void f(X, double) {} }; struct Y; void g(Y, int); void g(Y, double); struct Y { friend void g(Y, int) =3D delete; friend void g(Y, double) {} }; int main() { X x; f(x, 5.0); Y y; g(y, 5.0); } deleted-friend.cpp:3:26: error: can=E2=80=99t initialize friend function = =E2=80=98f=E2=80=99 friend void f(X, int) =3D delete; ^ deleted-friend.cpp:13:26: error: can=E2=80=99t initialize friend function = =E2=80=98g=E2=80=99 friend void g(Y, int) =3D delete; ^ clang accepts the code. There doesn't seem to be any standard wording forbidding in-class friend definitions that are deleted. >>From gcc-bugs-return-458219-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Tue Aug 12 00:33:42 2014 Return-Path: Delivered-To: listarch-gcc-bugs@gcc.gnu.org Received: (qmail 8494 invoked by alias); 12 Aug 2014 00:33:41 -0000 Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org Delivered-To: mailing list gcc-bugs@gcc.gnu.org Received: (qmail 8405 invoked by uid 48); 12 Aug 2014 00:33:31 -0000 From: "potswa at mac dot com" To: gcc-bugs@gcc.gnu.org Subject: [Bug preprocessor/58844] [4.8 Regression] ICE with invalid use of ## Date: Tue, 12 Aug 2014 00:33:00 -0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: preprocessor X-Bugzilla-Version: 4.9.0 X-Bugzilla-Keywords: ice-on-valid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: potswa at mac dot com X-Bugzilla-Status: RESOLVED X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: jakub at gcc dot gnu.org X-Bugzilla-Target-Milestone: 4.8.3 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: cc Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-SW-Source: 2014-08/txt/msg00716.txt.bz2 Content-length: 624 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58844 David Krauss changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |potswa at mac dot com --- Comment #9 from David Krauss --- The fix makes the case well-formed. It's not. A sequence of concatenation operators is not processed as if they were separated by empty parameters. "A ## ## B" concatenates A with the (second) ## to produce an illegal token "A##". Clang diagnoses it as such.