Topic: P0756R0: "Lambda syntax should be more


Author: "Arthur O'Dwyer" <arthur.j.odwyer@gmail.com>
Date: Tue, 18 Jul 2017 10:26:46 -0700
Raw View
--94eb2c1cc5c0e6752205549ad17b
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tue, Jul 18, 2017 at 10:01 AM, Nicol Bolas <jmckesson@gmail.com> wrote:

> On Tuesday, July 18, 2017 at 12:19:37 PM UTC-4, Barry Revzin wrote:
>>
>> As for making redundancy illegal, I believe that if you write something
>>> redundant, then you've clearly made some kind of mistake. If you use a
>>> default capture, and you then capture a variable in the same way as the
>>> default capture, then you are perhaps confused as to what you meant to
>>> capture and how you meant to capture it.
>>>
>>
>> I think the problem OP is trying to solve is that he wants to capture a
>> variable by-copy that isn't actually odr-used (or really, used by any
>> definition) in the lambda. So [=3D] won't capture it, but [=3D, token] i=
s
>> ill-formed.
>>
>
> In that case, I think the `x=3Dx` form would make it more clear what you'=
re
> trying to do. It demonstrates that you're not merely capturing the variab=
le
> for use in the lambda; you're explicitly and deliberately copying it into
> the members of the object.
>

Yep, that's covered in the paper.

In re:
> It's a simple rule to remember: *put the default **first**.* I don't
think that rule affects teachability.

I'd like to add that sentence to the paper, somewhere, so that I can rebut
it.
Currently C++ supports "defaults" or "default-like behavior" in the
following places that I'm aware of:
- Default-valued function arguments (only at the *end*)
- C-style variadic "do this with all the unmatched arguments" (only at the
*end*)
- Variadic template parameter packs (anywhere, but typically you want to
put them at the *end*)
- Aggregate initializer "set all other fields to zero" (only at the *end*)
- Default-valued template parameters (anywhere)
- Non-static data members (anywhere)
- *Lambda captures (only at the beginning)*

Am I missing anyplace in C++ that *does* follow the simple rule "put the
default *first*"?  It seems to me that that "rule" is more of a special
case that *changes* the general rule *only* in the case of lambda-captures
=E2=80=94 which is why I'm proposing to change it, to bring capture-lists i=
nto
closer harmony with the rest of the language.

In many of the above cases, there's a grammatical reason that they can
appear *only* at the end of the construct. For the cases where there's no
grammatical reason to put them at the end, C++ allows you to put them
anywhere. =E2=80=94 and then there's lambda-captures, which currently work
"backwards" from the rest of the language.

=E2=80=93Arthur

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/CADvuK0%2BKBmDo4QRCwg1DKgJpKnA6%2BOimuDDJvnCz3AO=
%3DwG1q%2Bw%40mail.gmail.com.

--94eb2c1cc5c0e6752205549ad17b
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On Tue, Jul 18, 2017 at 10:01 AM, Nicol Bolas <span dir=3D=
"ltr">&lt;<a href=3D"mailto:jmckesson@gmail.com" target=3D"_blank">jmckesso=
n@gmail.com</a>&gt;</span> wrote:<br><div class=3D"gmail_extra"><div class=
=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-l=
eft-style:solid;padding-left:1ex"><div dir=3D"ltr"><span class=3D"gmail-">O=
n Tuesday, July 18, 2017 at 12:19:37 PM UTC-4, Barry Revzin wrote:<blockquo=
te class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-widt=
h:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-le=
ft:1ex"><div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin:=
0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);=
border-left-style:solid;padding-left:1ex"><div dir=3D"ltr"><div>As for maki=
ng redundancy illegal, I believe that if you write something redundant, the=
n you&#39;ve clearly made some kind of mistake. If you use a default captur=
e, and you then capture a variable in the same way as the default capture, =
then you are perhaps confused as to what you meant to capture and how you m=
eant to capture it.<br></div></div></blockquote><div><br></div><div>I think=
 the problem OP is trying to solve is that he wants to capture a variable b=
y-copy that isn&#39;t actually odr-used (or really, used by any definition)=
 in the lambda. So [=3D] won&#39;t capture it, but [=3D, token] is ill-form=
ed.</div></div></blockquote></span><div><br>In that case, I think the `x=3D=
x` form would make it more clear what you&#39;re trying to do. It demonstra=
tes that you&#39;re not merely capturing the variable for use in the lambda=
; you&#39;re explicitly and deliberately copying it into the members of the=
 object.<br></div></div></blockquote><div><br></div><div>Yep, that&#39;s co=
vered in the paper.</div><div><br></div><div>In re:</div><div><span style=
=3D"font-size:13px">&gt; It&#39;s a simple rule to remember: <b>put the def=
ault=C2=A0</b></span><i style=3D"font-size:13px"><b>first</b></i><span styl=
e=3D"font-size:13px"><b>.</b> I don&#39;t think that rule affects teachabil=
ity.</span><br></div><div><br></div><div>I&#39;d like to add that sentence =
to the paper, somewhere, so that I can rebut it.</div><div>Currently C++ su=
pports &quot;defaults&quot; or &quot;default-like behavior&quot; in the fol=
lowing places that I&#39;m aware of:</div><div>- Default-valued function ar=
guments (only at the <b>end</b>)</div><div>- C-style variadic &quot;do this=
 with all the unmatched arguments&quot; (only at the <b>end</b>)</div><div>=
- Variadic template parameter packs (anywhere, but typically you want to pu=
t them at the <b>end</b>)</div><div>- Aggregate initializer &quot;set all o=
ther fields to zero&quot; (only at the <b>end</b>)<br></div><div>- Default-=
valued template parameters (anywhere)</div><div>- Non-static data members (=
anywhere)</div><div>- <b>Lambda captures (only at the beginning)</b></div><=
div><br></div><div>Am I missing anyplace in C++ that <i>does</i> follow the=
 simple rule &quot;put the default <i>first</i>&quot;?=C2=A0 It seems to me=
 that that &quot;rule&quot; is more of a special case that <i>changes</i> t=
he general rule=C2=A0<i>only</i> in the case of lambda-captures =E2=80=94 w=
hich is why I&#39;m proposing to change it, to bring capture-lists into clo=
ser harmony with the rest of the language.</div><div><br></div><div>In many=
 of the above cases, there&#39;s a grammatical reason that they can appear =
<i>only</i> at the end of the construct. For the cases where there&#39;s no=
 grammatical reason to put them at the end, C++ allows you to put them anyw=
here. =E2=80=94 and then there&#39;s lambda-captures, which currently work =
&quot;backwards&quot; from the rest of the language.</div><div><br></div><d=
iv>=E2=80=93Arthur</div></div></div></div>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CADvuK0%2BKBmDo4QRCwg1DKgJpKnA6%2BOim=
uDDJvnCz3AO%3DwG1q%2Bw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoo=
ter">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADvuK0%2=
BKBmDo4QRCwg1DKgJpKnA6%2BOimuDDJvnCz3AO%3DwG1q%2Bw%40mail.gmail.com</a>.<br=
 />

--94eb2c1cc5c0e6752205549ad17b--

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Tue, 18 Jul 2017 10:41:03 -0700 (PDT)
Raw View
------=_Part_2169_295328553.1500399663449
Content-Type: multipart/alternative;
 boundary="----=_Part_2170_1956804323.1500399663450"

------=_Part_2170_1956804323.1500399663450
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tuesday, July 18, 2017 at 1:26:49 PM UTC-4, Arthur O'Dwyer wrote:
>
> On Tue, Jul 18, 2017 at 10:01 AM, Nicol Bolas <jmck...@gmail.com=20
> <javascript:>> wrote:
>
>> On Tuesday, July 18, 2017 at 12:19:37 PM UTC-4, Barry Revzin wrote:
>>>
>>> As for making redundancy illegal, I believe that if you write something=
=20
>>>> redundant, then you've clearly made some kind of mistake. If you use a=
=20
>>>> default capture, and you then capture a variable in the same way as th=
e=20
>>>> default capture, then you are perhaps confused as to what you meant to=
=20
>>>> capture and how you meant to capture it.
>>>>
>>>
>>> I think the problem OP is trying to solve is that he wants to capture a=
=20
>>> variable by-copy that isn't actually odr-used (or really, used by any=
=20
>>> definition) in the lambda. So [=3D] won't capture it, but [=3D, token] =
is=20
>>> ill-formed.
>>>
>>
>> In that case, I think the `x=3Dx` form would make it more clear what you=
're=20
>> trying to do. It demonstrates that you're not merely capturing the varia=
ble=20
>> for use in the lambda; you're explicitly and deliberately copying it int=
o=20
>> the members of the object.
>>
>
> Yep, that's covered in the paper.
>
> In re:
> > It's a simple rule to remember: *put the default **first**.* I don't=20
> think that rule affects teachability.
>
> I'd like to add that sentence to the paper, somewhere, so that I can rebu=
t=20
> it.
> Currently C++ supports "defaults" or "default-like behavior" in the=20
> following places that I'm aware of:
> - Default-valued function arguments (only at the *end*)
> - C-style variadic "do this with all the unmatched arguments" (only at th=
e=20
> *end*)
> - Variadic template parameter packs (anywhere, but typically you want to=
=20
> put them at the *end*)
> - Aggregate initializer "set all other fields to zero" (only at the *end*=
)
> - Default-valued template parameters (anywhere)
> - Non-static data members (anywhere)
> - *Lambda captures (only at the beginning)*
>
>
Notably, most of those are about values: initializing a particular named=20
construct with a particular value. The ones that aren't are the variadics.

Specifying a default capture for a lambda is not assigning a named=20
construct a particular value. So there's no reason to expect them to work=
=20
the same way. Just because they use the same word "default" does not mean=
=20
they're somehow comparable.

Unless you think that "default initialization" is somehow related to and=20
should be syntactically consistent with "default parameters" or "default=20
capture".
=20

> Am I missing anyplace in C++ that *does* follow the simple rule "put the=
=20
> default *first*"?  It seems to me that that "rule" is more of a special=
=20
> case that *changes* the general rule *only* in the case of=20
> lambda-captures =E2=80=94 which is why I'm proposing to change it, to bri=
ng=20
> capture-lists into closer harmony with the rest of the language.
>

To what end? You're making it harder for a user to find how the lambda=20
captures values by default. "Consistency" (even if we ignore the above,=20
where we show there's no expectation of consistency) is not as important as=
=20
usability.

Think of it like this. If C++ had more available syntax, the default=20
capture style would be part of the lambda inducer's syntax itself. We only=
=20
put it inside the inducer because it's syntactically easier.

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/5d55f1ce-dce7-4dbe-a4e1-6569d99e5ced%40isocpp.or=
g.

------=_Part_2170_1956804323.1500399663450
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On Tuesday, July 18, 2017 at 1:26:49 PM UTC-4, Arthur O&#3=
9;Dwyer wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-l=
eft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"=
>On Tue, Jul 18, 2017 at 10:01 AM, Nicol Bolas <span dir=3D"ltr">&lt;<a hre=
f=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"rRxW-lGtAgAJ" =
rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;javascript:&#39;;return tr=
ue;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true;">jmck...@gma=
il.com</a>&gt;</span> wrote:<br><div><div class=3D"gmail_quote"><blockquote=
 class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:=
1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left=
:1ex"><div dir=3D"ltr"><span>On Tuesday, July 18, 2017 at 12:19:37 PM UTC-4=
, Barry Revzin wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0px =
0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);bord=
er-left-style:solid;padding-left:1ex"><div dir=3D"ltr"><blockquote class=3D=
"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;borde=
r-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><di=
v dir=3D"ltr"><div>As for making redundancy illegal, I believe that if you =
write something redundant, then you&#39;ve clearly made some kind of mistak=
e. If you use a default capture, and you then capture a variable in the sam=
e way as the default capture, then you are perhaps confused as to what you =
meant to capture and how you meant to capture it.<br></div></div></blockquo=
te><div><br></div><div>I think the problem OP is trying to solve is that he=
 wants to capture a variable by-copy that isn&#39;t actually odr-used (or r=
eally, used by any definition) in the lambda. So [=3D] won&#39;t capture it=
, but [=3D, token] is ill-formed.</div></div></blockquote></span><div><br>I=
n that case, I think the `x=3Dx` form would make it more clear what you&#39=
;re trying to do. It demonstrates that you&#39;re not merely capturing the =
variable for use in the lambda; you&#39;re explicitly and deliberately copy=
ing it into the members of the object.<br></div></div></blockquote><div><br=
></div><div>Yep, that&#39;s covered in the paper.</div><div><br></div><div>=
In re:</div><div><span style=3D"font-size:13px">&gt; It&#39;s a simple rule=
 to remember: <b>put the default=C2=A0</b></span><i style=3D"font-size:13px=
"><b>first</b></i><span style=3D"font-size:13px"><b>.</b> I don&#39;t think=
 that rule affects teachability.</span><br></div><div><br></div><div>I&#39;=
d like to add that sentence to the paper, somewhere, so that I can rebut it=
..</div><div>Currently C++ supports &quot;defaults&quot; or &quot;default-li=
ke behavior&quot; in the following places that I&#39;m aware of:</div><div>=
- Default-valued function arguments (only at the <b>end</b>)</div><div>- C-=
style variadic &quot;do this with all the unmatched arguments&quot; (only a=
t the <b>end</b>)</div><div>- Variadic template parameter packs (anywhere, =
but typically you want to put them at the <b>end</b>)</div><div>- Aggregate=
 initializer &quot;set all other fields to zero&quot; (only at the <b>end</=
b>)<br></div><div>- Default-valued template parameters (anywhere)</div><div=
>- Non-static data members (anywhere)</div><div>- <b>Lambda captures (only =
at the beginning)</b></div><div><br></div></div></div></div></blockquote><d=
iv><br>Notably, most of those are about values: initializing a particular n=
amed construct with a particular value. The ones that aren&#39;t are the va=
riadics.<br><br>Specifying a default capture for a lambda is not assigning =
a named construct a particular value. So there&#39;s no reason to expect th=
em to work the same way. Just because they use the same word &quot;default&=
quot; does not mean they&#39;re somehow comparable.<br><br>Unless you think=
 that &quot;default initialization&quot; is somehow related to and should b=
e syntactically consistent with &quot;default parameters&quot; or &quot;def=
ault capture&quot;.<br>=C2=A0</div><blockquote class=3D"gmail_quote" style=
=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: =
1ex;"><div dir=3D"ltr"><div><div class=3D"gmail_quote"><div></div><div>Am I=
 missing anyplace in C++ that <i>does</i> follow the simple rule &quot;put =
the default <i>first</i>&quot;?=C2=A0 It seems to me that that &quot;rule&q=
uot; is more of a special case that <i>changes</i> the general rule=C2=A0<i=
>only</i> in the case of lambda-captures =E2=80=94 which is why I&#39;m pro=
posing to change it, to bring capture-lists into closer harmony with the re=
st of the language.</div></div></div></div></blockquote><div><br>To what en=
d? You&#39;re making it harder for a user to find how the lambda captures v=
alues by default. &quot;Consistency&quot; (even if we ignore the above, whe=
re we show there&#39;s no expectation of consistency) is not as important a=
s usability.<br><br>Think of it like this. If C++ had more available syntax=
, the default capture style would be part of the lambda inducer&#39;s synta=
x itself. We only put it inside the inducer because it&#39;s syntactically =
easier.<br></div></div>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/5d55f1ce-dce7-4dbe-a4e1-6569d99e5ced%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/5d55f1ce-dce7-4dbe-a4e1-6569d99e5ced=
%40isocpp.org</a>.<br />

------=_Part_2170_1956804323.1500399663450--

------=_Part_2169_295328553.1500399663449--

.


Author: Greg Marr <gregmmarr@gmail.com>
Date: Sat, 12 Aug 2017 19:36:57 -0700 (PDT)
Raw View
------=_Part_3426_1090124765.1502591817960
Content-Type: multipart/alternative;
 boundary="----=_Part_3427_124918642.1502591817961"

------=_Part_3427_124918642.1502591817961
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Tuesday, July 18, 2017 at 1:26:49 PM UTC-4, Arthur O'Dwyer wrote:
>
> In many of the above cases, there's a grammatical reason that they can=20
> appear *only* at the end of the construct. For the cases where there's no=
=20
> grammatical reason to put them at the end, C++ allows you to put them=20
> anywhere. =E2=80=94 and then there's lambda-captures, which currently wor=
k=20
> "backwards" from the rest of the language.
>

With the default first, the grammar can enforce that it's only used once,=
=20
and that only one of them is used.  With it allowed anywhere, as in your=20
paper, it can't be enforced by the grammar. so you had to add the separate=
=20
rule to spell out that restriction.

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/8a373416-9b6f-4572-9a88-3b7e39f166f8%40isocpp.or=
g.

------=_Part_3427_124918642.1502591817961
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On Tuesday, July 18, 2017 at 1:26:49 PM UTC-4, Arthur O&#3=
9;Dwyer wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-l=
eft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"=
><div class=3D"gmail_quote"><div>In many of the above cases, there&#39;s a =
grammatical reason that they can appear <i>only</i> at the end of the const=
ruct. For the cases where there&#39;s no grammatical reason to put them at =
the end, C++ allows you to put them anywhere. =E2=80=94 and then there&#39;=
s lambda-captures, which currently work &quot;backwards&quot; from the rest=
 of the language.<br></div></div></div></blockquote><div><br></div><div>Wit=
h the default first, the grammar can enforce that it&#39;s only used once, =
and that only one of them is used. =C2=A0With it allowed anywhere, as in yo=
ur paper, it can&#39;t be enforced by the grammar. so you had to add the se=
parate rule to spell out that restriction.</div><div><br></div></div>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/8a373416-9b6f-4572-9a88-3b7e39f166f8%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/8a373416-9b6f-4572-9a88-3b7e39f166f8=
%40isocpp.org</a>.<br />

------=_Part_3427_124918642.1502591817961--

------=_Part_3426_1090124765.1502591817960--

.


Author: "Arthur O'Dwyer" <arthur.j.odwyer@gmail.com>
Date: Sat, 12 Aug 2017 21:52:21 -0700
Raw View
--94eb2c05f3e6c826ae05569b4fdc
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, Aug 12, 2017 at 7:36 PM, Greg Marr <gregmmarr@gmail.com> wrote:

> On Tuesday, July 18, 2017 at 1:26:49 PM UTC-4, Arthur O'Dwyer wrote:
>>
>> In many of the above cases, there's a grammatical reason that they can
>> appear *only* at the end of the construct. For the cases where there's
>> no grammatical reason to put them at the end, C++ allows you to put them
>> anywhere. =E2=80=94 and then there's lambda-captures, which currently wo=
rk
>> "backwards" from the rest of the language.
>>
>
> With the default first, the grammar can enforce that it's only used once,
> and that only one of them is used.  With it allowed anywhere, as in your
> paper, it can't be enforced by the grammar. so you had to add the separat=
e
> rule to spell out that restriction.
>

Yup. But I was able to strike out a whole paragraph of *other* rules that
can't be enforced by the grammar! :)
I've finally gotten around to updating the paper to add a section
attempting to rebut the "default always goes first" argument.

Does anyone happen to know the exact date of the pre-Albuquerque mailing
submission deadline?  I was hoping to see it mentioned in N4633
<https://isocpp.org/files/papers/N4633.pdf> but nope.

Thanks,
=E2=80=93Arthur

--=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/CADvuK0J6JupL8mnyBz2LiynFsTz7kg8K1cqsVe5ntS4gaEn=
rew%40mail.gmail.com.

--94eb2c05f3e6c826ae05569b4fdc
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">On Sat, Aug 12, 2017 at 7:36 PM, Greg Marr <span dir=3D"lt=
r">&lt;<a href=3D"mailto:gregmmarr@gmail.com" target=3D"_blank">gregmmarr@g=
mail.com</a>&gt;</span> wrote:<br><div class=3D"gmail_extra"><div class=3D"=
gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;b=
order-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><span class=3D=
"">On Tuesday, July 18, 2017 at 1:26:49 PM UTC-4, Arthur O&#39;Dwyer wrote:=
<blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;borde=
r-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div class=3D"gmai=
l_quote"><div>In many of the above cases, there&#39;s a grammatical reason =
that they can appear <i>only</i> at the end of the construct. For the cases=
 where there&#39;s no grammatical reason to put them at the end, C++ allows=
 you to put them anywhere. =E2=80=94 and then there&#39;s lambda-captures, =
which currently work &quot;backwards&quot; from the rest of the language.<b=
r></div></div></div></blockquote><div><br></div></span><div>With the defaul=
t first, the grammar can enforce that it&#39;s only used once, and that onl=
y one of them is used.=C2=A0 With it allowed anywhere, as in your paper, it=
 can&#39;t be enforced by the grammar. so you had to add the separate rule =
to spell out that restriction.</div></div></blockquote><div><br></div><div>=
Yup. But I was able to strike out a whole paragraph of <i>other</i> rules t=
hat can&#39;t be enforced by the grammar! :)</div><div>I&#39;ve finally got=
ten around to updating the paper to add a section attempting to rebut the &=
quot;default always goes first&quot; argument.</div><div><br></div><div>Doe=
s anyone happen to know the exact date of the pre-Albuquerque mailing submi=
ssion deadline?=C2=A0 I was hoping to see it mentioned in <a href=3D"https:=
//isocpp.org/files/papers/N4633.pdf">N4633</a> but nope.</div><div><br></di=
v><div>Thanks,</div><div>=E2=80=93Arthur</div></div></div></div>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CADvuK0J6JupL8mnyBz2LiynFsTz7kg8K1cqs=
Ve5ntS4gaEnrew%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADvuK0J6JupL8mny=
Bz2LiynFsTz7kg8K1cqsVe5ntS4gaEnrew%40mail.gmail.com</a>.<br />

--94eb2c05f3e6c826ae05569b4fdc--

.


Author: Tom Honermann <tom@honermann.net>
Date: Sun, 13 Aug 2017 09:54:07 -0400
Raw View
--Apple-Mail-C7B28F84-9202-44E0-998D-914828F07DBC
Content-Type: text/plain; charset="UTF-8"


> On Aug 13, 2017, at 12:52 AM, Arthur O'Dwyer <arthur.j.odwyer@gmail.com> wrote:
>
> Does anyone happen to know the exact date of the pre-Albuquerque mailing submission deadline?  I was hoping to see it mentioned in N4633 but nope.

October 16th.

Tom.

--
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.
To view this discussion on the web visit https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/FE5D3122-1198-4F81-BE28-DDEAB8A7357B%40honermann.net.

--Apple-Mail-C7B28F84-9202-44E0-998D-914828F07DBC
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; charset=
=3Dutf-8"></head><body dir=3D"auto"><div><br></div><div>On Aug 13, 2017, at=
 12:52 AM, Arthur O'Dwyer &lt;<a href=3D"mailto:arthur.j.odwyer@gmail.com">=
arthur.j.odwyer@gmail.com</a>&gt; wrote:<br><br></div><blockquote type=3D"c=
ite"><div><div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_q=
uote"><div>Does anyone happen to know the exact date of the pre-Albuquerque=
 mailing submission deadline?&nbsp; I was hoping to see it mentioned in <a =
href=3D"https://isocpp.org/files/papers/N4633.pdf">N4633</a> but nope.</div=
></div></div></div>
</div></blockquote><br><div>October 16th.&nbsp;</div><div><br></div><div>To=
m.&nbsp;</div></body></html>

<p></p>

-- <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 />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/FE5D3122-1198-4F81-BE28-DDEAB8A7357B%=
40honermann.net?utm_medium=3Demail&utm_source=3Dfooter">https://groups.goog=
le.com/a/isocpp.org/d/msgid/std-proposals/FE5D3122-1198-4F81-BE28-DDEAB8A73=
57B%40honermann.net</a>.<br />

--Apple-Mail-C7B28F84-9202-44E0-998D-914828F07DBC--

.