Date: Mon, 9 Feb 2026 18:33:06 -0500
On Mon, Feb 9, 2026 at 5:40 PM Alejandro Colomar
<une+cxx_std-proposals_at_[hidden]> wrote:
>
> Hi Jason,
>
> On 2026-02-09T17:22:02-0500, Jason McKesson via Std-Proposals wrote:
> > > I'm working on non-ignorable attributes in ISO C2y. There seems to be
> > > some consensus being built (but not yet there) that non-ignorable
> > > attributes should be scoped ones (similar to vendor ones), just with
> > > a standard prefix. I think the best prefix would have to be either
> > > [[::attr]] or [[std::attr]].
> >
> > Do we really need 6-9 keystrokes just for a keyword? What you're
> > talking about aren't attributes anymore; they're just namespaced
> > keywords (and thus cannot conflict with existing code).
> >
> > Please find better syntax for new keywords.
>
> The good thing about attributes is that placing rules are clear. If we
> add new keywords, that increases syntax complexity. Using scopes
> attributes, the syntax stays untouched.
That's nice for computer usability and readability, but it does
nothing for *human* usability and readability. Indeed, it makes those
things worse.
The attribute syntax was introduced with the understanding that they
would be ignorable. They could have Godawful syntax because you
weren't supposed to interact with them that much. That's why the
`[[override]]` and `[[final]]` attributes became the `override` and
`final` contextual keywords, and all of our lives were made better
because of that.
Attributes are supposed to be rarely used tools for very specific
communication with compilers, not replacements for keywords because
it's easier to standardize an attribute than an actual keyword.
If C++ needs an easy way to introduce keywords, then add that.
<une+cxx_std-proposals_at_[hidden]> wrote:
>
> Hi Jason,
>
> On 2026-02-09T17:22:02-0500, Jason McKesson via Std-Proposals wrote:
> > > I'm working on non-ignorable attributes in ISO C2y. There seems to be
> > > some consensus being built (but not yet there) that non-ignorable
> > > attributes should be scoped ones (similar to vendor ones), just with
> > > a standard prefix. I think the best prefix would have to be either
> > > [[::attr]] or [[std::attr]].
> >
> > Do we really need 6-9 keystrokes just for a keyword? What you're
> > talking about aren't attributes anymore; they're just namespaced
> > keywords (and thus cannot conflict with existing code).
> >
> > Please find better syntax for new keywords.
>
> The good thing about attributes is that placing rules are clear. If we
> add new keywords, that increases syntax complexity. Using scopes
> attributes, the syntax stays untouched.
That's nice for computer usability and readability, but it does
nothing for *human* usability and readability. Indeed, it makes those
things worse.
The attribute syntax was introduced with the understanding that they
would be ignorable. They could have Godawful syntax because you
weren't supposed to interact with them that much. That's why the
`[[override]]` and `[[final]]` attributes became the `override` and
`final` contextual keywords, and all of our lives were made better
because of that.
Attributes are supposed to be rarely used tools for very specific
communication with compilers, not replacements for keywords because
it's easier to standardize an attribute than an actual keyword.
If C++ needs an easy way to introduce keywords, then add that.
Received on 2026-02-09 23:33:19
