Date: Tue, 6 May 2025 12:04:00 -0400
On Tue, May 6, 2025 at 5:54 AM Frederick Virchanza Gotham via
Std-Proposals <std-proposals_at_[hidden]> wrote:
>
> On Mon, May 5, 2025 at 3:02 PM Jason McKesson wrote:
> > Now yes, this is a problem created only by the OP's insistence on
> > changing the fundamental meaning of keywords, but that is the core
> > context of this conversation.
>
>
> If I were using the word "noexcept" to mean something like
> "non-exceptional mathematical operations", then yeah I'd agree with
> you that I'm changing the meaning of the word. But I'm talking about
> "no exceptions", so adding the new syntax "noexcept(explicit)" is an
> expansion on a previous feature, rather than changing the fundamental
> meaning of a keyword.
You're trying to use a vernacular definition which you invented (ie:
`noexcept` means "no exceptions") instead of the actual definition
defined by the standard (ie: `noexcept` means the function cannot
*emit* exceptions). The `noexcept` keyword is meant to tell you how a
function relates to the outside world; it says something about the
function's *interface*. It says nothing about what happens *within*
the function.
Put simply, `noexcept` is a matter of the declaration. The definition
does need it (for various reasons), but the statement that the keyword
is making about the function is important to how you use it, not what
happens inside of it.
Your `noexcept(explicit)` syntax has nothing to do with the
declaration. It says nothing meaningful about how to use the function;
it is *solely* concerned with the definition of the function. This is
not an expansion of the meaning behind "will not emit exceptions"; it
is a completely new meaning ("will not call functions that can throw")
being grafted onto convenient syntax.
Std-Proposals <std-proposals_at_[hidden]> wrote:
>
> On Mon, May 5, 2025 at 3:02 PM Jason McKesson wrote:
> > Now yes, this is a problem created only by the OP's insistence on
> > changing the fundamental meaning of keywords, but that is the core
> > context of this conversation.
>
>
> If I were using the word "noexcept" to mean something like
> "non-exceptional mathematical operations", then yeah I'd agree with
> you that I'm changing the meaning of the word. But I'm talking about
> "no exceptions", so adding the new syntax "noexcept(explicit)" is an
> expansion on a previous feature, rather than changing the fundamental
> meaning of a keyword.
You're trying to use a vernacular definition which you invented (ie:
`noexcept` means "no exceptions") instead of the actual definition
defined by the standard (ie: `noexcept` means the function cannot
*emit* exceptions). The `noexcept` keyword is meant to tell you how a
function relates to the outside world; it says something about the
function's *interface*. It says nothing about what happens *within*
the function.
Put simply, `noexcept` is a matter of the declaration. The definition
does need it (for various reasons), but the statement that the keyword
is making about the function is important to how you use it, not what
happens inside of it.
Your `noexcept(explicit)` syntax has nothing to do with the
declaration. It says nothing meaningful about how to use the function;
it is *solely* concerned with the definition of the function. This is
not an expansion of the meaning behind "will not emit exceptions"; it
is a completely new meaning ("will not call functions that can throw")
being grafted onto convenient syntax.
Received on 2025-05-06 16:04:14