Date: Wed, 18 Dec 2019 10:25:10 +0100
On 2019-12-17 at 22:20, jianping z via Std-Proposals wrote:
> Thank you and Michael Hava for the updates, it turns out my C++
> knowledge needs to be updated to C++17.
>
> Here are some of my thoughts about your concern,
>
> 1. the "&&?" notation
> we may treat "&&" as a token having two "&", and each "?" can optionally
> remove one "&",
> following the rule, "&&??" can be used to optionally remove two "&" from
> "&&" with "??".
>
> a) const? -> (), const //2 variations with single "?"
> b) &? -> (), & //2 variations with single "?"
> c) &&? -> &, && //2 variations with single "?"
> d) &&?? -> (), &, && //3 variations with double "?" ("??")
>
> here, left side is the notations, right side are the variations of the
> final tokens to replace the notation, "()" means no token (notation removed)
> by explaining "?" like this, developer may able to accept this concept
> easily. though "&?", and "&&??" are hardly needed, but they may still be
> usefully, for example
>
Readability concerns aside, using double question marks gets you very
close to accidentally stumble into trigraphs. Although now formally
removed from C++, several compilers still support them as an extension.
For example, see "What does the C ??!??! operator do?"
https://stackoverflow.com/questions/7825055/what-does-the-c-operator-do
Bo Persson
> Thank you and Michael Hava for the updates, it turns out my C++
> knowledge needs to be updated to C++17.
>
> Here are some of my thoughts about your concern,
>
> 1. the "&&?" notation
> we may treat "&&" as a token having two "&", and each "?" can optionally
> remove one "&",
> following the rule, "&&??" can be used to optionally remove two "&" from
> "&&" with "??".
>
> a) const? -> (), const //2 variations with single "?"
> b) &? -> (), & //2 variations with single "?"
> c) &&? -> &, && //2 variations with single "?"
> d) &&?? -> (), &, && //3 variations with double "?" ("??")
>
> here, left side is the notations, right side are the variations of the
> final tokens to replace the notation, "()" means no token (notation removed)
> by explaining "?" like this, developer may able to accept this concept
> easily. though "&?", and "&&??" are hardly needed, but they may still be
> usefully, for example
>
Readability concerns aside, using double question marks gets you very
close to accidentally stumble into trigraphs. Although now formally
removed from C++, several compilers still support them as an extension.
For example, see "What does the C ??!??! operator do?"
https://stackoverflow.com/questions/7825055/what-does-the-c-operator-do
Bo Persson
Received on 2019-12-18 03:27:53