Am 15. April 2021 14:41:34 MESZ schrieb Aaron Ballman <aaron@aaronballman.com>:
On Thu, Apr 15, 2021 at 8:02 AM Jens Gustedt <jens.gustedt@inria.fr> wrote:

Aaron,

on Thu, 15 Apr 2021 07:08:34 -0400 you (Aaron Ballman
<aaron@aaronballman.com>) wrote:

On Thu, Apr 15, 2021 at 6:50 AM Jens Gustedt via Liaison
<liaison@lists.isocpp.org> wrote:

Ville,

on Thu, 15 Apr 2021 13:22:05 +0300 you (Ville Voutilainen
<ville.voutilainen@gmail.com>) wrote:
...

no, these operators are not new, they would just be different
spellings

(and I described how I see that this fits into the C specification
in several papers, you could have a look at
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2644.pdf, for
example)
and add them as alternative spellings of some existing semantic
descriptions. Overall, I think there's not much specification
difficulty, at least not for things that are just alternate
spellings.

That's the kind of information that I was after, thank you.

I don't know whether you envision adding new operators,

no

Then these aren't "just different spellings" as far as I can tell. For
example, this is valid C++ code that uses a different spelling:

struct S {
int operator and(int i); // [lex.digraph]
int operator <::>(int i) const; // [lex.digraph]
};

yes

Why are these hypothetical punctuators different?

Sorry, maybe I don't get what you are asking.

Perhaps I misunderstood, but I thought Ville was asking whether you'd
be able to write:

int operator∧(int i);

and I thought you were answering that you did not intend for that to
be a valid operator overload.

If you'd have `¬a ∧ b` that would just be another spelling of `!a && b`.

If you'd have `⟦vendor∷pride⟧` that would effectively be two new
tokens `⟦` and `⟧` that the languages do not yet have, compared to the
one token `∷` that would be another spelling of `::`. We would have to
have a syntax rule to make this equivalent to `[[vendor::pride]]`.

But these tokens would not be operator tokens with new semantic or so,
just new syntactic notation of some part of a declarator.

My concern is addressed if operator ∧(), operator &&(), and operator
and() are all identical declarations (except for spelling). e.g., I
should be able to write:

struct S {
int operator∧(int) const;
};

S s;
s && 12; // ok, calls operator∧()

~Aaron



Jens

--
:: INRIA Nancy Grand Est ::: Camus ::::::: ICube/ICPS :::
:: ::::::::::::::: office Strasbourg : +33 368854536 ::
:: :::::::::::::::::::::: gsm France : +33 651400183 ::
:: ::::::::::::::: gsm international : +49 15737185122 ::
:: http://icube-icps.unistra.fr/index.php/Jens_Gustedt ::

Yes, that's the main idea. For punctuators that correspond to operators this would just be a different spelling.

Jens
--
Jens Gustedt - INRIA & ICube, Strasbourg, France