Topic: if not (expression) like python


Author: shatilov.diman@gmail.com
Date: Fri, 19 Jun 2015 04:38:11 -0700 (PDT)
Raw View
------=_Part_836_1980042915.1434713891594
Content-Type: multipart/alternative;
 boundary="----=_Part_837_1174678493.1434713891594"

------=_Part_837_1174678493.1434713891594
Content-Type: text/plain; charset=UTF-8

Hello all!

Sorry for my poor English.

I suggest to add new keyword '*not*' to the c++17, like in python.

I think
if not (bag.empty()) {}
is more readable, then
if (bag.empty() == false) {}
//or
if (!bag.empty()) {}

Besides that in last case keyword '!' could be lost while merge branches or
refactor bad code like that:
if(!bag||!bag->empty()||bag->full()) {}

I'd like read your opinion or hear constructive criticism.

Thank you!

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.

------=_Part_837_1174678493.1434713891594
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hello all!<div><br></div><div>Sorry for my poor English.</=
div><div><br></div><div>I suggest to add new keyword '<b>not</b>' to the c+=
+17, like in python.</div><div><br></div><div>I think</div><div><div style=
=3D"border: 1px solid rgb(187, 187, 187); word-wrap: break-word; background=
-color: rgb(250, 250, 250);"><code><span style=3D"color: rgb(0, 0, 136);">i=
f</span><span style=3D"color: rgb(0, 0, 0);">&nbsp;</span><span style=3D"co=
lor: rgb(0, 0, 136);">not</span><span style=3D"color: rgb(0, 0, 0);">&nbsp;=
</span><span style=3D"color: rgb(102, 102, 0);">(</span><span style=3D"colo=
r: rgb(0, 0, 0);">bag</span><span style=3D"color: rgb(102, 102, 0);">.</spa=
n><span style=3D"color: rgb(0, 0, 0);">empty</span><span style=3D"color: rg=
b(102, 102, 0);">())</span><span style=3D"color: rgb(0, 0, 0);">&nbsp;</spa=
n><span style=3D"color: rgb(102, 102, 0);">{}</span></code></div>is more re=
adable, then</div><div><div style=3D"border: 1px solid rgb(187, 187, 187); =
word-wrap: break-word; background-color: rgb(250, 250, 250);"><code><font c=
olor=3D"#666600"><span style=3D"color: rgb(0, 0, 136);">if</span><span styl=
e=3D"color: rgb(0, 0, 0);">&nbsp;</span>(<span style=3D"color: rgb(0, 0, 0)=
;">bag</span>.<span style=3D"color: rgb(0, 0, 0);">empty</span>()<span styl=
e=3D"color: rgb(0, 0, 0);">&nbsp;</span>=3D=3D<span style=3D"color: rgb(0, =
0, 0);">&nbsp;</span><span style=3D"color: rgb(0, 0, 136);">false</span>)<s=
pan style=3D"color: rgb(0, 0, 0);">&nbsp;</span>{}<span style=3D"color: rgb=
(0, 0, 0);"><br></span><span style=3D"color: rgb(136, 0, 0);">//or</span><s=
pan style=3D"color: rgb(0, 0, 0);"><br></span><span style=3D"color: rgb(0, =
0, 136);">if</span><span style=3D"color: rgb(0, 0, 0);">&nbsp;</span>(!<spa=
n style=3D"color: rgb(0, 0, 0);">bag</span>.<span style=3D"color: rgb(0, 0,=
 0);">empty</span>())<span style=3D"color: rgb(0, 0, 0);">&nbsp;</span>{}</=
font></code></div><br>Besides that in last case keyword '!' could be lost w=
hile merge branches or refactor bad code like that:<br></div><div><div styl=
e=3D"border: 1px solid rgb(187, 187, 187); word-wrap: break-word; backgroun=
d-color: rgb(250, 250, 250);"><code><font color=3D"#666600"><span style=3D"=
color: rgb(0, 0, 136);">if</span>(!<span style=3D"color: rgb(0, 0, 0);">bag=
</span>||!<span style=3D"color: rgb(0, 0, 0);">bag</span>-&gt;<span style=
=3D"color: rgb(0, 0, 0);">empty</span>()||<span style=3D"color: rgb(0, 0, 0=
);">bag</span>-&gt;<span style=3D"color: rgb(0, 0, 0);">f<wbr>ull</span>())=
<span style=3D"color: rgb(0, 0, 0);">&nbsp;</span>{}</font></code></div><br=
>I'd like read your opinion or hear constructive criticism.</div><div><br><=
/div><div>Thank you!</div></div>

<p></p>

-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />

------=_Part_837_1174678493.1434713891594--
------=_Part_836_1980042915.1434713891594--

.


Author: Evgeny Panasyuk <evgeny.panasyuk@gmail.com>
Date: Fri, 19 Jun 2015 14:44:34 +0300
Raw View
19.06.2015 14:38, shatilov.diman@gmail.com:
> Sorry for my poor English.
>
> I suggest to add new keyword '*not*' to the c++17, like in python.
>
> I think
> |ifnot(bag.empty()){}|
> is more readable, then
> |if(bag.empty()==false){}
> //or
> if(!bag.empty()){}|

C++ already has "not": http://coliru.stacked-crooked.com/a/43b2a7e11c75e601

|if(not bag.empty()) {}|

--
Evgeny Panasyuk

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.

.


Author: Diman Shatilov <shatilov.diman@gmail.com>
Date: Fri, 19 Jun 2015 04:48:12 -0700 (PDT)
Raw View
------=_Part_822_1411011421.1434714492590
Content-Type: multipart/alternative;
 boundary="----=_Part_823_207038926.1434714492590"

------=_Part_823_207038926.1434714492590
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Cool! How I missed it?
Please, remove the topic

=D0=BF=D1=8F=D1=82=D0=BD=D0=B8=D1=86=D0=B0, 19 =D0=B8=D1=8E=D0=BD=D1=8F 201=
5 =D0=B3., 14:44:43 UTC+3 =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=
=D1=82=D0=B5=D0=BB=D1=8C Evgeny Panasyuk=20
=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB:
>
> 19.06.2015 14:38, shatilo...@gmail.com <javascript:>:=20
> > Sorry for my poor English.=20
> >=20
> > I suggest to add new keyword '*not*' to the c++17, like in python.=20
> >=20
> > I think=20
> > |ifnot(bag.empty()){}|=20
> > is more readable, then=20
> > |if(bag.empty()=3D=3Dfalse){}=20
> > //or=20
> > if(!bag.empty()){}|=20
>
> C++ already has "not":=20
> http://coliru.stacked-crooked.com/a/43b2a7e11c75e601=20
>
> |if(not bag.empty()) {}|=20
>
> --=20
> Evgeny Panasyuk=20
>

--=20

---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.

------=_Part_823_207038926.1434714492590
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Cool! How I missed it?<div>Please, remove the topic<br><br=
>=D0=BF=D1=8F=D1=82=D0=BD=D0=B8=D1=86=D0=B0, 19 =D0=B8=D1=8E=D0=BD=D1=8F 20=
15 =D0=B3., 14:44:43 UTC+3 =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=
=D1=82=D0=B5=D0=BB=D1=8C Evgeny Panasyuk =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=
=B0=D0=BB:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:=
 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">19.06.2015 14:38, <a=
 href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"sJj-R8a8Vl=
MJ" rel=3D"nofollow" onmousedown=3D"this.href=3D'javascript:';return true;"=
 onclick=3D"this.href=3D'javascript:';return true;">shatilo...@gmail.com</a=
>:
<br>&gt; Sorry for my poor English.
<br>&gt;
<br>&gt; I suggest to add new keyword '*not*' to the c++17, like in python.
<br>&gt;
<br>&gt; I think
<br>&gt; |ifnot(bag.empty()){}|
<br>&gt; is more readable, then
<br>&gt; |if(bag.empty()=3D=3Dfalse){}
<br>&gt; //or
<br>&gt; if(!bag.empty()){}|
<br>
<br>C++ already has "not": <a href=3D"http://coliru.stacked-crooked.com/a/4=
3b2a7e11c75e601" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.hre=
f=3D'http://www.google.com/url?q\75http%3A%2F%2Fcoliru.stacked-crooked.com%=
2Fa%2F43b2a7e11c75e601\46sa\75D\46sntz\0751\46usg\75AFQjCNHcwMDdm8vigClCcks=
SZTpL6OJpNQ';return true;" onclick=3D"this.href=3D'http://www.google.com/ur=
l?q\75http%3A%2F%2Fcoliru.stacked-crooked.com%2Fa%2F43b2a7e11c75e601\46sa\7=
5D\46sntz\0751\46usg\75AFQjCNHcwMDdm8vigClCcksSZTpL6OJpNQ';return true;">ht=
tp://coliru.stacked-crooked.<wbr>com/a/43b2a7e11c75e601</a>
<br>
<br>|if(not bag.empty()) {}|
<br>
<br>--=20
<br>Evgeny Panasyuk
<br></blockquote></div></div>

<p></p>

-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />

------=_Part_823_207038926.1434714492590--
------=_Part_822_1411011421.1434714492590--

.


Author: Thiago Macieira <thiago@macieira.org>
Date: Fri, 19 Jun 2015 10:46:30 -0700
Raw View
On Friday 19 June 2015 04:48:12 Diman Shatilov wrote:
> Cool! How I missed it?

Most people don't know it.

       and       &&
       and_eq    &=
       bitand    &
       bitor     |
       compl     ~
       not       !
       not_eq    !=
       or        ||
       or_eq     |=
       xor       ^
       xor_eq    ^=

See 2.11 [lex.key]/2 and 2.12 [lex.operators].

> Please, remove the topic

Can't do it. It's archived forever now.

--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
   Software Architect - Intel Open Source Technology Center
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.

.


Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Fri, 19 Jun 2015 14:15:05 -0400
Raw View
Even more OT...

On 2015-06-19 13:46, Thiago Macieira wrote:
>        and       &&
>        and_eq    &=3D
>        bitand    &
>        bitor     |
>        compl     ~
>        not       !
>        not_eq    !=3D
>        or        ||
>        or_eq     |=3D
>        xor       ^
>        xor_eq    ^=3D
>=20
> See 2.11 [lex.key]/2 and 2.12 [lex.operators].

Ugh, the inconsistencies...

- 'xor' is a bitwise operator, but bitwise and/or are 'bitand'/'bitor',
while 'and'/'or' are Boolean operators. (Incidentally, Boolean xor is
spelled '!=3D', or more precisely, 'bool(a) !=3D bool(b)'.)

- 'not_eq' is a binary operator which takes two immutable values and
returns a 'bool', while the other '_eq' are all assignment operators...
also binary, technically, but "returning" a reference to the LHS (not
frequently used, hence the quotes) which is modified according to the
RHS value.

(And yes, I know exceptions to the above statements may exist in the
case of esoteric and dubious user-defined operators, e.g. an operator!=3D
that mutates its inputs.)


I doubt these are used enough to be worth bothering, or I'd be tempted
to add:

  is      =E2=86=92  =3D=3D
  is_not  =E2=86=92  !=3D
  bitxor  =E2=86=92  ^

....and to deprecate 'xor' and 'not_eq' :-).

--=20
Matthew

--=20

---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.

.


Author: David Krauss <potswa@gmail.com>
Date: Sun, 21 Jun 2015 10:11:51 +0800
Raw View
--Apple-Mail=_F332BDA5-1FC7-4583-B6A9-359CC6ECDA6E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8


> On 2015=E2=80=9306=E2=80=9320, at 2:15 AM, Matthew Woehlke <mwoehlke.flos=
s@gmail.com> wrote:
>=20
> I doubt these are used enough to be worth bothering, or I'd be tempted
> to add:

Supposedly they=E2=80=99re useful to programmers without certain characters=
 in their keyboard layouts. They are essentially inherited from C <iso646.h=
>. If the alternative spellings were used as intended in C++, such code wou=
ld be written with rvalue references declared by =E2=80=9Cand,=E2=80=9D lva=
lue references by =E2=80=9Cbitand,=E2=80=9D and destructors by =E2=80=9Ccom=
pl.=E2=80=9D

They=E2=80=99re cute, but not a serious alternative style.

As for parity with Python, note that the ! operator has high syntactic prec=
edence, so you need to parenthesize the expression unless it=E2=80=99s more=
 than e.g. a simple identifier or function call. Negated if expressions wer=
e proposed in Urbana (IIRC) and there was little interest.

--=20

---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.

--Apple-Mail=_F332BDA5-1FC7-4583-B6A9-359CC6ECDA6E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset=UTF-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html charset=
=3Dutf-8"></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><br class=3D""><di=
v><blockquote type=3D"cite" class=3D""><div class=3D"">On 2015=E2=80=9306=
=E2=80=9320, at 2:15 AM, Matthew Woehlke &lt;<a href=3D"mailto:mwoehlke.flo=
ss@gmail.com" class=3D"">mwoehlke.floss@gmail.com</a>&gt; wrote:</div><br c=
lass=3D"Apple-interchange-newline"><div class=3D""><span style=3D"font-fami=
ly: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; f=
ont-weight: normal; letter-spacing: normal; line-height: normal; orphans: a=
uto; text-align: start; text-indent: 0px; text-transform: none; white-space=
: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; =
float: none; display: inline !important;" class=3D"">I doubt these are used=
 enough to be worth bothering, or I'd be tempted</span><br style=3D"font-fa=
mily: Helvetica; font-size: 12px; font-style: normal; font-variant: normal;=
 font-weight: normal; letter-spacing: normal; line-height: normal; orphans:=
 auto; text-align: start; text-indent: 0px; text-transform: none; white-spa=
ce: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px=
;" class=3D""><span style=3D"font-family: Helvetica; font-size: 12px; font-=
style: normal; font-variant: normal; font-weight: normal; letter-spacing: n=
ormal; line-height: normal; orphans: auto; text-align: start; text-indent: =
0px; text-transform: none; white-space: normal; widows: auto; word-spacing:=
 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !importa=
nt;" class=3D"">to add:</span><br style=3D"font-family: Helvetica; font-siz=
e: 12px; font-style: normal; font-variant: normal; font-weight: normal; let=
ter-spacing: normal; line-height: normal; orphans: auto; text-align: start;=
 text-indent: 0px; text-transform: none; white-space: normal; widows: auto;=
 word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=3D""></div></blo=
ckquote></div><br class=3D""><div class=3D"">Supposedly they=E2=80=99re use=
ful to programmers without certain characters in their keyboard layouts. Th=
ey are essentially inherited from C <font face=3D"Courier" class=3D"">&lt;i=
so646.h&gt;</font>.&nbsp;If the alternative spellings were used as intended=
 in C++, such code would be written with rvalue references declared by =E2=
=80=9C<font face=3D"Courier" class=3D"">and</font>,=E2=80=9D lvalue referen=
ces by =E2=80=9C<font face=3D"Courier" class=3D"">bitand</font>,=E2=80=9D a=
nd destructors by =E2=80=9C<font face=3D"Courier" class=3D"">compl</font>.=
=E2=80=9D</div><div class=3D""><br class=3D""></div><div class=3D"">They=E2=
=80=99re cute, but not a serious alternative style.</div><div class=3D""><b=
r class=3D""></div><div class=3D"">As for parity with Python, note that the=
 <font face=3D"Courier" class=3D"">!</font> operator has high syntactic pre=
cedence, so you need to parenthesize the expression unless it=E2=80=99s mor=
e than e.g. a simple identifier or function call. Negated <font face=3D"Cou=
rier" class=3D"">if</font>&nbsp;expressions were proposed in Urbana (IIRC) =
and there was little interest.</div></body></html>

<p></p>

-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />

--Apple-Mail=_F332BDA5-1FC7-4583-B6A9-359CC6ECDA6E--

.


Author: Vadim Petrochenkov <vadim.petrochenkov@gmail.com>
Date: Sun, 21 Jun 2015 03:16:50 -0700 (PDT)
Raw View
------=_Part_1955_114902112.1434881810383
Content-Type: multipart/alternative;
 boundary="----=_Part_1956_571997731.1434881810383"

------=_Part_1956_571997731.1434881810383
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

As an anecdote: I had `not`, `and` and `or` instead of `!`, `&&` and `||`=
=20
as a part of style guide at one of the previous jobs, and we did have all=
=20
the characters on our keyboards.
At first they seemed strange, but they indeed were more visible/more=20
readable/less noisy than their symbolic counterparts, especially `not`.

On Sunday, June 21, 2015 at 5:12:01 AM UTC+3, David Krauss wrote:
>
>
> On 2015=E2=80=9306=E2=80=9320, at 2:15 AM, Matthew Woehlke <mwoehlk...@gm=
ail.com=20
> <javascript:>> wrote:
>
> I doubt these are used enough to be worth bothering, or I'd be tempted
> to add:
>
>
> Supposedly they=E2=80=99re useful to programmers without certain characte=
rs in=20
> their keyboard layouts. They are essentially inherited from C <iso646.h>.=
 If=20
> the alternative spellings were used as intended in C++, such code would b=
e=20
> written with rvalue references declared by =E2=80=9Cand,=E2=80=9D lvalue =
references by =E2=80=9C
> bitand,=E2=80=9D and destructors by =E2=80=9Ccompl.=E2=80=9D
>
> They=E2=80=99re cute, but not a serious alternative style.
>
> As for parity with Python, note that the ! operator has high syntactic=20
> precedence, so you need to parenthesize the expression unless it=E2=80=99=
s more=20
> than e.g. a simple identifier or function call. Negated if expressions=20
> were proposed in Urbana (IIRC) and there was little interest.
>

--=20

---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.

------=_Part_1956_571997731.1434881810383
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">As an anecdote: I had `not`, `and` and `or` instead of `!`=
, `&amp;&amp;` and `||` as a part of style guide at one of the previous job=
s, and we did have all the characters on our keyboards.<div>At first they s=
eemed strange, but they indeed were more visible/more readable/less noisy t=
han their symbolic counterparts, especially `not`.<br><br>On Sunday, June 2=
1, 2015 at 5:12:01 AM UTC+3, David Krauss wrote:<blockquote class=3D"gmail_=
quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;pa=
dding-left: 1ex;"><div style=3D"word-wrap:break-word"><br><div><blockquote =
type=3D"cite"><div>On 2015=E2=80=9306=E2=80=9320, at 2:15 AM, Matthew Woehl=
ke &lt;<a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"y=
MBYHw96HyAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D'javascript:';retu=
rn true;" onclick=3D"this.href=3D'javascript:';return true;">mwoehlk...@gma=
il.com</a>&gt; wrote:</div><br><div><span style=3D"font-family:Helvetica;fo=
nt-size:12px;font-style:normal;font-variant:normal;font-weight:normal;lette=
r-spacing:normal;line-height:normal;text-align:start;text-indent:0px;text-t=
ransform:none;white-space:normal;word-spacing:0px;float:none;display:inline=
!important">I doubt these are used enough to be worth bothering, or I'd be =
tempted</span><br style=3D"font-family:Helvetica;font-size:12px;font-style:=
normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-he=
ight:normal;text-align:start;text-indent:0px;text-transform:none;white-spac=
e:normal;word-spacing:0px"><span style=3D"font-family:Helvetica;font-size:1=
2px;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing=
:normal;line-height:normal;text-align:start;text-indent:0px;text-transform:=
none;white-space:normal;word-spacing:0px;float:none;display:inline!importan=
t">to add:</span><br style=3D"font-family:Helvetica;font-size:12px;font-sty=
le:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line=
-height:normal;text-align:start;text-indent:0px;text-transform:none;white-s=
pace:normal;word-spacing:0px"></div></blockquote></div><br><div>Supposedly =
they=E2=80=99re useful to programmers without certain characters in their k=
eyboard layouts. They are essentially inherited from C <font face=3D"Courie=
r">&lt;iso646.h&gt;</font>.&nbsp;If the alternative spellings were used as =
intended in C++, such code would be written with rvalue references declared=
 by =E2=80=9C<font face=3D"Courier">and</font>,=E2=80=9D lvalue references =
by =E2=80=9C<font face=3D"Courier">bitand</font>,=E2=80=9D and destructors =
by =E2=80=9C<font face=3D"Courier">compl</font>.=E2=80=9D</div><div><br></d=
iv><div>They=E2=80=99re cute, but not a serious alternative style.</div><di=
v><br></div><div>As for parity with Python, note that the <font face=3D"Cou=
rier">!</font> operator has high syntactic precedence, so you need to paren=
thesize the expression unless it=E2=80=99s more than e.g. a simple identifi=
er or function call. Negated <font face=3D"Courier">if</font>&nbsp;expressi=
ons were proposed in Urbana (IIRC) and there was little interest.</div></di=
v></blockquote></div></div>

<p></p>

-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />

------=_Part_1956_571997731.1434881810383--
------=_Part_1955_114902112.1434881810383--

.