śr., 22 wrz 2021 o 09:42 Ville Voutilainen via Liaison <liaison@lists.isocpp.org> napisał(a):
On Wed, 22 Sept 2021 at 00:02, Jens Maurer via Liaison
<liaison@lists.isocpp.org> wrote:
> (Personally, I think contracts should be a first-level
> language feature that should not be hidden inside an
> attribute-looking syntax atrocity.  At least in C++,
> the space where they are does allow for context-sensitive
> keywords without much hassle; cf. override and final.)

Well, yeah.. if we were to entertain a contract declaration preceding
the decl-specifier,
so that it could do forward-lookup for the parameters, then the case
for an attribute-like
syntax would be relatively strong. If the contract declaration has to
appear where context-sensitive
keywords appear, then why not use a context-sensitive keyword?

The current contracts proposal (P2388R2) as well as C++20 contracts offer(ed) three new annotations:
 * preconditions and postconditions that appear in function declarations,
 * an assertion that appears in the function body.

This third kind is in the position of a regular statement inside a block scope, so a context-sensitive keyword will not work; unless we were to drop these assertions or treat them in a different, irregular way.
Also a natural future extension of the currently proposed contracts is class invariants, which would also appear as a declaration in class-scope, so no room for context-sensitive keywords.

Regards,
&rzej;