Date: Sat, 7 Oct 2023 17:37:45 +0300
On Sat, 7 Oct 2023 at 17:31, Timur Doumler <cpp_at_[hidden]> wrote:
> > We don't need to waive any deadlines, there's nothing in P2961's
> > content for C++26 that is macro-unfriendly. Everything in it is
> > "pre/post(something)",
> > there are no prefix-brackets or any "pre<magic>/post<magic>" bits in
> > it, just possibly in its future extensions. And those extensions
> > aren't set in stone, and can change.
>
> Wait, not quite:, there is the syntax for return values in postconditions which is not a future extension – that's being proposed now:
>
> int f()
> post (ret: ret >= 0);
>
> Is that colon in there compatible with function-like macros? Because that's not valid function call syntax at least.
Of course it is, the argument list of a macro is just a token or
multiple tokens. Thus:
#define post(X)
void f(int x, int y)
post(ret: ret >= 0)
{
(void)x;
(void)y;
}
https://wandbox.org/permlink/JavMNfd6kGjF9f13
> > We don't need to waive any deadlines, there's nothing in P2961's
> > content for C++26 that is macro-unfriendly. Everything in it is
> > "pre/post(something)",
> > there are no prefix-brackets or any "pre<magic>/post<magic>" bits in
> > it, just possibly in its future extensions. And those extensions
> > aren't set in stone, and can change.
>
> Wait, not quite:, there is the syntax for return values in postconditions which is not a future extension – that's being proposed now:
>
> int f()
> post (ret: ret >= 0);
>
> Is that colon in there compatible with function-like macros? Because that's not valid function call syntax at least.
Of course it is, the argument list of a macro is just a token or
multiple tokens. Thus:
#define post(X)
void f(int x, int y)
post(ret: ret >= 0)
{
(void)x;
(void)y;
}
https://wandbox.org/permlink/JavMNfd6kGjF9f13
Received on 2023-10-07 14:37:59