public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "luigighiron at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug c++/114857] New: Pointer attributes and qualifiers are parsed in wrong order
Date: Thu, 25 Apr 2024 22:37:18 +0000	[thread overview]
Message-ID: <bug-114857-4@http.gcc.gnu.org/bugzilla/> (raw)

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114857

            Bug ID: 114857
           Summary: Pointer attributes and qualifiers are parsed in wrong
                    order
           Product: gcc
           Version: 14.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: luigighiron at gmail dot com
  Target Milestone: ---

GCC accepts the following declaration:

int*const[[]]p=0;

And rejects the following declaration:

int*[[]]const p=0;

It seems that GCC expects the attributes of a pointer declarator to come after
the qualifiers. The standard specifies in the grammar that the attributes
should come before qualifiers and not after:

> ptr-operator:
> * attribute-specifier-seq opt cv-qualifier-seq opt
> & attribute-specifier-seq opt
> && attribute-specifier-seq opt
> nested-name-specifier * attribute-specifier-seq opt cv-qualifier-seq opt
Section 9.3.1 "General" [dcl.decl.general] Paragraph 5 ISO/IEC 14882:2020

The first declaration should be rejected and the second declaration should be
accepted. Clang and MSVC get this correct (though not EDG I think so Visual
Studio will show errors in the correct declarations and not in the incorrect
declarations), and GCC gets this correct with pointer to members but not with
normal pointers.

                 reply	other threads:[~2024-04-25 22:37 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-114857-4@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).