Topic: This variable should not be named: an identifier
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Mon, 27 Mar 2017 13:27:11 -0700 (PDT)
Raw View
------=_Part_9069_1290673214.1490646431390
Content-Type: multipart/alternative;
boundary="----=_Part_9070_2124662613.1490646431390"
------=_Part_9070_2124662613.1490646431390
Content-Type: text/plain; charset=UTF-8
Hello,
this is a draft for a proposal to add a special meaning to the identifier
__ (double underscore) so that it can be used (even repeatedly in the same
lexical scope) for all variables whose name is not important and that is no
longer needed after declaration. The draft includes a few examples.
Is there any interest in this?
Thanks in advance,
Alberto
--
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/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp.org.
------=_Part_9070_2124662613.1490646431390
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Hello,<br><br>this is a draft for a proposal to add a spec=
ial meaning to the identifier __ (double underscore) so that it can be used=
(even repeatedly in the same lexical scope) for all variables whose name i=
s not important and that is no longer needed after declaration. The draft i=
ncludes a few examples.<br><br>Is there any interest in this?<br><br>Thanks=
in advance,<br><br>Alberto<br><br></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/985b9b2a-c734-45eb-95f4-db4dc0d309a1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/985b9b2a-c734-45eb-95f4-db4dc0d309a1=
%40isocpp.org</a>.<br />
------=_Part_9070_2124662613.1490646431390--
------=_Part_9069_1290673214.1490646431390
Content-Type: application/pdf; name="This Variable Should Not Be Named.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename="This Variable Should Not Be Named.pdf"
X-Attachment-Id: 786a82ea-a2d2-4ceb-8452-ccd317814790
Content-ID: <786a82ea-a2d2-4ceb-8452-ccd317814790>
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
/qsEHTl7beJgoqTOZpHsSXq3d/O7hmz4JIGpbjfcOcW1SPx2xWqjVZxSgXHSqTBE+fJxpbzKpqH1
ecbf7/8PkyguywplbmRzdHJlYW0KZW5kb2JqCgozIDAgb2JqCjI3MzIKZW5kb2JqCgoxMTUgMCBv
YmoKPDwvTGVuZ3RoIDExNiAwIFIvRmlsdGVyL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnicvVxZjxy3
EX6fXzFA3gxoxbPZDQwG2Dk6B2IgThbIQ5CHjSXZSuSVIyhI8u9TvItkkT27keyFR80eslisKn51
sKfZHd//e/f6/tPn9+8ev/+8P3173v1zz/YM7utF34n9rPjdvP/0dvfnb/ZPuyt8X/Zmdwvjy7Sv
//30w05Pd2ZvZn0n9z/ttJzvptD6sA8tw4A2tFzHouH77X7cvfuGmDQNWDJl10qUtYHPSKxo+H5j
yjDAZMqulSgrdacSsaLh+40pwwCdKbtWoiw5yDsSKxq+35gyDEBydq1EmWfBosvQZ0iVz2AJiapr
JapMIYUVDd9vzC8MQNpzrUh5WnhWWNEI/YaU7YCsPd9KlM2cFVY2fL8xZRiQtedbifKks8LKhu83
pjzhXeJbibLOpHQxxZb2oDvSnm8lqvCZFFY2fL8xvzAga8+3EmWhkfaKhu83pgwDkPZcK1HmAims
aPh+Y8owAGnPtSJlvSxZYUUj9BtStgOy9nwrUZ7Rxigbvh+i/KefH58Oh9ffnn972bPj8XQJYAx/
AKenh522+8oYCaMf3uxfr3LPGXD38O7ABJNMMc0m+P/KbYvzE2dM8iu7Mg73FFMc7jLDF+i52u8Z
9IA+V+h5YjNbjg9/310fdt+17PA+O5NjoWLnvk9K9EkpAxKpSU3+D3iUTPOVr7AmuOYXWMVZsHB9
5QuseoJ1234Tu+eaT30mZJ8JqeCzx8TiyNsJVj+h4PC/EFIodh8nF1qAIvg9CHcBQa+gAN+exkyp
PlPCeq0eU7B+MY1ErvuEmSGMaSr/SEOK31oLgsm7MgAJCDA5AVSSDIZSmLrMTosiTG3AbGXhm8yy
M4yUt7Fp+mzOvG/GpEzjlqxk6m1szMbcZ2Oa+4aMbOcMu0cKA1KYxTKaaulPpdXAPK1oYSfAVIyf
2czdH1vY0GR5HwAnxZ9psx35fgkz4H1kBIF+XXMF1S3Aq/YIcxO3ffCFsQPw1QOafSydmOiboDiJ
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
bHmLY20zuWIn9S/mYCsPZHOVdcOQLl1VTOctLqYtlxTThqZKB6RDjVXqJgMw3uSzwZXoBxB+CeGP
EP4JQcFWspW0801FqO3cgDYkMQyfGPhsJNGG5EZMNhBgMt0bNySTaENxQyqGJ0AMgD63mRXhDZsQ
TAU8EEigES3dQE7bRNKJP1IBqPj/Ayu/6S0KZW5kc3RyZWFtCmVuZG9iagoKMjg4IDAgb2JqCjM1
MzU3CmVuZG9iagoKMjg5IDAgb2JqCjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvQkFB
QUFBK1RpbWVzTmV3Um9tYW5QU01UCi9GbGFncyA0Ci9Gb250QkJveFstNTY4IC0zMDYgMjAwMCAx
MDA3XS9JdGFsaWNBbmdsZSAwCi9Bc2NlbnQgODkxCi9EZXNjZW50IC0yMTYKL0NhcEhlaWdodCAx
MDA2Ci9TdGVtViA4MAovRm9udEZpbGUyIDI4NyAwIFIKPj4KZW5kb2JqCgoyOTAgMCBvYmoKPDwv
TGVuZ3RoIDU0OS9GaWx0ZXIvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJxdlM2Om0AQhO88BcfNYQXT
08CuZFnyz1ryIT+KNw+AYewgxYAwe/Dbh+qaJFIOtoqhuufrZnqy3XF/7Ls5+zYNzSnM6aXr2ync
h4+pCek5XLs+cZK2XTPHJ/tvbvWYZEvs6XGfw+3YX4bVKsm+L+/u8/RInzbtcA6fkuzr1Iap66/p
04/daXk+fYzjr3AL/ZzmyXqdtuGy5Plcj1/qW8gs6vnYLq+7+fG8hPwzvD/GkIo9O6I0QxvuY92E
qe6vIVnl+TpdHQ7rJPTtf+8qZcj50vysp8XqFmueF7petJguX6G96crWles76IK6gC5N+w10xfUX
6BfGeuhX05JDb7hXCb2l30Hv6BfoPddNv9FveQ5cX4pauZx+MDjyl+B05Nc3aPIr8rjIv4cmv5qf
/CXyu8hvseT3qNeRv6ygye/NQ/4CvXKR3zT5xfaK/KjdRX70Ssiv8Av5FXVJ5DdP5AebkN+jV0J+
MX/sP2oU8hfgFPKrafIrahHyyxaa/Go5ya/op5C/wjcS8pfmJ3+FWjz5Bd/ak19Qiyd/AR4f+c1P
fkHffDw/yO/BL7mzWPJXYPbx/IDNk7+yvcivFkt+QV1+Z3nE1snvbV/ye9Tlye/RT43nB33W2H/k
V/IL9lVPNuRXpcY3VfIX6Imy/4Wtk9/jXGk8P6hFye/NH/m3NphxAjGiuEP+jH7afEzTMvZ20di8
Y9K7Pvy9i8ZhRJT9fgP/lBjLCmVuZHN0cmVhbQplbmRvYmoKCjI5MSAwIG9iago8PC9UeXBlL0Zv
bnQvU3VidHlwZS9UcnVlVHlwZS9CYXNlRm9udC9CQUFBQUErVGltZXNOZXdSb21hblBTTVQKL0Zp
cnN0Q2hhciAwCi9MYXN0Q2hhciA3NAovV2lkdGhzWzc3NyA2MTAgMjc3IDI3NyAyNzcgNDQzIDI3
NyA1MDAgMzg5IDI1MCA3MjIgNDQzIDMzMyA1MDAgNTU2IDUwMAo1MDAgNTAwIDcyMiA2NjYgNzc3
IDcyMiA0NDMgNTAwIDU2MyA1MDAgNTYzIDcyMiA1MDAgMzMzIDU1NiAyNzcKMzMzIDcyMiAzODkg
NjY2IDUwMCAyNzcgNTAwIDk0MyA3MjIgNjEwIDU2MyA3MjIgNjEwIDUwMCA1MDAgNTAwCjMzMyAz
MzMgNjY2IDkyMCAyNTAgMzMzIDMzMyA3MjIgNTAwIDUwMCA1NTYgMjUwIDEwMDAgNTAwIDUwMCA1
MDAKNDQzIDcyMiAzMzMgNDQzIDQ0MyAzMzMgMzMzIDUwMCA1MDAgMjc3IDcyMiBdCi9Gb250RGVz
Y3JpcHRvciAyODkgMCBSCi9Ub1VuaWNvZGUgMjkwIDAgUgo+PgplbmRvYmoKCjI5MiAwIG9iago8
PC9MZW5ndGggMjkzIDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAxNDQ5Nj4+CnN0cmVh
bQp4nO16eXxURbb/qarbW9ZOQpKmQ9K30+kmSZOtOyEhENJZBUMgkIBpZEmTdEhDSEIWthEBVwhu
z23EDZ0ZRwUcOh3QBrf8HMdRZ3zOjE9Fnx/Feci4DOr41GEU0u9U9SUkjjPom98fv8/n572pqlPn
fM+pU6dO3bo3SX/vgBeiYDswcLWu8/RMVkkUAH4LQOJbN/TL2x7SWpE+DqC5vb1n9brYjs8bAHSb
AFSe1Z2b2zfM3rMAIOYtAPV1HV5Pmzp0XQxAYgfamN6BjNbR7Rrs34f9jI51/ZtuwQ7+PIt9Q2d3
q+dJKVGNfdSHmHWeTT1PMZ2E/T9jX+7yrPPuMfx2L0BSFEDyVT3dff2AjgLk3MTlPb3eng+vXnkA
+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
W9435OlPnV2+nnfsHwjJyHoMY/mpa2Ny7dqt+mfthnKYpT9F4uJnAJYZ+i9O2c/gmYws/Ui4vjZG
Pwuvrc8W5JPly5fDcqKZPt3pwIMQLOm2qUydOCkpyakxF0+fXpwwvajQZknXFCUkOR2zmeioNeRX
Nev2u92Xj975saM+f25ScmG9bjQrYnlFxtlkk5xa2DXbV9i5elHF3ILOVwrYrpPb269f/9bojKQp
o6PzkpNMcVarVLKNdTZOSknTTD2bcHFp720vtjYsPv1zzCpwhd7HN9ZdYMR3i1HX9Fh9pNWgN1gl
0Oq1NL5Ru1BHM3XZ1hLdzLQ5mrnaubo5EZdqL9Evtt4i/UR6ICEgPWrVT+UhLbMV6dKnxJVr0+Mj
y7U6rU6VAlpdogyDKS5txOzolNSUvBSWkhJpyYjXqKZGRsqlsYmmRJponIqvpUG2w5Ucs72xKGZ7
ZkN5jAsN7Y0hMZNt9l8a7PPDC1L/txPz9V8urz8F5afKT8XPyFtuF5GfwYOPsX8BI4wwDDE+D46A
LvT2MLqiC2IbF1GuVVoNb3VRs3k/gK1YXDcuy/IEvhROx/TiZDWuTFFhfIZYJnwdV0+djssTXo7P
NZcvnXP1lYmnXr/51iBJumVNe+UlD/c8e+vyH/2oqKD9PbLZYXZvnelN/SjYfRspeWTJzMZ5rWVZ
xris4j012YVv8N/rZGNilmHMs+BvrgpqiJphxrKQLGYrdCsiFmXtYwdi9xkeMOquNt5mDNnZLmmP
RNNMJgI15g8zs/KhntBJMjVRYs6LJtFBsteVPsmqVhNNJn7Eg8kkmyfJMr50RWSaZX2+zqVr0DHd
UeoCE2WBrBdkvly5yTNkV2FZoeyaViS7MrCkYzHJyJiSWggyAXmv/LT8O/kTOSSr8c1o52G7nOyY
x3fI58qWsNtPnD2xnO+L8lnXqsbvCGTzlYkTu0LZFNfGoLggn0caVzPByuKLpysB5hsBb8x8tXJr
LHwvCNZa4r7p4I0LnWZbuiEn2SxRjTYyLtZY1OjJTstWy3uOyLGTzIklbGHJqJHYN1ZPtVbOykkz
Jai12hjXqrsrG3uTL6frOnPjo/Q6jH7oVOh9/G7dhV/1j7kyHIQkp6foy7WRUqwhMjG2dKoqM9IS
u4exPFKOnxcr8SM8SCRXRO5zkK9RZWRpJgfJYVdh4nOG5MjUjLhIOgjPERfmWQMh5IWY0t/Jx+VP
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
Zxd6dvtAmEDbnPzm1R/mCSjY+8b4/D/KoI9bsRMMKf/nsbQp4tQ9bHcabHbnkdCnbMdQvJOD3aSP
+4f6aC1so0/Y7cPHAPwPGErJAgplbmRzdHJlYW0KZW5kb2JqCgoyOTMgMCBvYmoKNzY1NQplbmRv
YmoKCjI5NCAwIG9iago8PC9UeXBlL0ZvbnREZXNjcmlwdG9yL0ZvbnROYW1lL0VBQUFBQStUaW1l
c05ld1JvbWFuUFMtSXRhbGljTVQKL0ZsYWdzIDY4Ci9Gb250QkJveFstNDk3IC0zMDYgMTM1MiAx
MDI0XS9JdGFsaWNBbmdsZSAtMzAKL0FzY2VudCA4OTEKL0Rlc2NlbnQgLTIxNgovQ2FwSGVpZ2h0
IDEwMjMKL1N0ZW1WIDgwCi9Gb250RmlsZTIgMjkyIDAgUgo+PgplbmRvYmoKCjI5NSAwIG9iago8
PC9MZW5ndGggMjQ1L0ZpbHRlci9GbGF0ZURlY29kZT4+CnN0cmVhbQp4nF1Qy27EIAy88xUct4cV
JNu0lwip2mqlHPpQ034AASdFagA55JC/LzjbVuoBNLZnxiOLc/fYeZfEKwbTQ+Kj8xZhCSsa4ANM
zrOq5taZdK3oN7OOTGRtvy0J5s6PoW2ZeMuzJeHGDw82DHDDxAtaQOcnfvg497nu1xi/YAafuGRK
cQtj9nnS8VnPIEh17Gweu7Qds+SP8L5F4DXV1R7FBAtL1AZQ+wlYK6Xi7eWiGHj7b9bsimE0nxoz
s8pMKe+lyrgmfNcUfNr7dcG3hGviNHv/RN5Xl7KlnOEnPTcrYk5Ot6LIJazz8HvOGGJR0fsGqFh2
pAplbmRzdHJlYW0KZW5kb2JqCgoyOTYgMCBvYmoKPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5
cGUvQmFzZUZvbnQvRUFBQUFBK1RpbWVzTmV3Um9tYW5QUy1JdGFsaWNNVAovRmlyc3RDaGFyIDAK
L0xhc3RDaGFyIDUKL1dpZHRoc1s3NzcgNTAwIDQ0MyAzODkgMjUwIDM4OSBdCi9Gb250RGVzY3Jp
cHRvciAyOTQgMCBSCi9Ub1VuaWNvZGUgMjk1IDAgUgo+PgplbmRvYmoKCjI5NyAwIG9iago8PC9M
ZW5ndGggMjk4IDAgUi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAyNTU0OD4+CnN0cmVhbQp4
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
b3IvRm9udE5hbWUvREFBQUFBK1NvdXJjZUNvZGVQcm8tUmVndWxhcgovRmxhZ3MgNAovRm9udEJC
b3hbLTI1IC0yODUgNzA2IDk1M10vSXRhbGljQW5nbGUgMAovQXNjZW50IDk4NAovRGVzY2VudCAt
MjczCi9DYXBIZWlnaHQgOTUyCi9TdGVtViA4MAovRm9udEZpbGUyIDI5NyAwIFIKPj4KZW5kb2Jq
CgozMDAgMCBvYmoKPDwvTGVuZ3RoIDQ3NS9GaWx0ZXIvRmxhdGVEZWNvZGU+PgpzdHJlYW0KeJxd
k8tu2zAQRff6Ci3TRSCRFMUEEAw4fgBe9IE6/QBZoh0BsSTQ8sJ/X965bAt0YeGQnBkcjjnF5rA9
jMNS/AhTd/RLfh7GPvjbdA+dz0/+MoyZ0nk/dEtaybe7tnNWxNzj47b462E8T02TFT/j2W0Jj/xp
3U8n/yUrvofeh2G85E+/Nse4Pt7n+dNf/bjkZbZa5b0/xzpf2/lbe/WFZD0f+ng8LI/nmPIv4P0x
+1zLWlGlm3p/m9vOh3a8+Kwpy1Xe7PerzI/9f2fWMeV07j7aEENVDC1LG4ObUgu7GmyEa9mvyK9g
S67AtbAuwY77kvvC/RfwK1ly16z/Bn4jW/CGuTvwlvsKvOO+xOzJm8iqJBsw/WvUVPSvt2D6O3gq
+jv4KPo7iaG/kVz6a9xXJX/4KPrX8FH01xqc/MUh+Uv95C8x9Hfoj6K/WUfWyd+B6W/go+lv4aPp
r9FPTX8rMfQ36IOmv0NvNf2d1KS/wd01/Q18dOq/ONC/wr00/S3uoulfoeea/lZy6W9R09DfItek
94N4Q/8Kbib5C9PfoJ8mvR/UNOn94F6G/hUcDP0r/BeG/tVOHnN6tXjWmLs/45J39xDiqMhwyoxg
OobR/53feZqRJb/f8a/xCwplbmRzdHJlYW0KZW5kb2JqCgozMDEgMCBvYmoKPDwvVHlwZS9Gb250
L1N1YnR5cGUvVHJ1ZVR5cGUvQmFzZUZvbnQvREFBQUFBK1NvdXJjZUNvZGVQcm8tUmVndWxhcgov
Rmlyc3RDaGFyIDAKL0xhc3RDaGFyIDU3Ci9XaWR0aHNbNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg
NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwCjYwMCA2MDAgNjAwIDYwMCA2
MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMAo2MDAgNjAwIDYw
MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAKNjAw
IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIF0KL0ZvbnREZXNjcmlwdG9yIDI5
OSAwIFIKL1RvVW5pY29kZSAzMDAgMCBSCj4+CmVuZG9iagoKMzAyIDAgb2JqCjw8L0xlbmd0aCAz
MDMgMCBSL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgxIDMzMjcyPj4Kc3RyZWFtCnic7b15fJXF
9TA+M89z9+25+36fuye5Nzc3y80GIXmyyhYICkjQSFgSiCBZ2AQXUHHDtlCtItJWtG7VtoQE8YK1
pm7V1hZa22qrX6UtXbRGbYu0VXLznpnnsrV+X/v+3j/ez+f3+d7LzDkzc2Y/c+acmblh/dCGHqRH
2xCHpOVXLR345L9eexkh9CpC2LJ84/rgdX/48+2AH0dIHe8dWHnVNsuThxDSqhFS3LJyzebe+m9M
tSBk2oVQ26pVPUtX3LL1WgGhBf+AMqpoxEBuswqhhaUQjq66av3VAcNdj0J4PoQfW9O/fGn5pZOX
Q/g0hBdetfTqgRbyGyj7UpoeXLv0qp7T93RvhfB6hJzBgf51ADlIWvsVmj4w1DPwQN11UQgfRMja
CHEYvvSjB1RJw4TjFUqVWqPV6Q1Gk2C2WG12h9Pl9nh9/oAYDIUj0Vi8oLAI/f/0o/gSEhWzmfNx
X0FehCZ/A+4EuD/lZk6eVqxGkdyVk8c5KwxWVHb5TwxtR1H0J3QPehZ1oR8RDrXiErQI8diF3Ijg
WjQLC8iJFFiLClEEzUIdyI5mot9jA9qPytB7uA3dgGNoLvoqCqM5yIEa0ZfRPnzR5LvoBvQa7kNP
QO7HsIQK0Gw8ffIdNA91TD4FdSA0Fe1G92EjEiFFiyOTb0MJ69Ct6Aj6JZpEi9G9in1QSge6GK2d
fApdjn6KF+PLJn1oBlqLrkf3ogfQM+gEvg2P8YrJblSJlqEhrMJWXMjdOPkYqlG8oXly8oXJY0gA
+geg1PdJkm+b/ABJ6E88nlwFTGZFFfBdix5Eh9Bb2IUruWZkRBmoqwtdi/ZzhdDG6eh26NsRfA3e
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
IDIwMDAgMTAyNl0vSXRhbGljQW5nbGUgMAovQXNjZW50IDg5MQovRGVzY2VudCAtMjE2Ci9DYXBI
ZWlnaHQgMTAyNQovU3RlbVYgODAKL0ZvbnRGaWxlMiAzMDIgMCBSCj4+CmVuZG9iagoKMzA1IDAg
b2JqCjw8L0xlbmd0aCA0MDgvRmlsdGVyL0ZsYXRlRGVjb2RlPj4Kc3RyZWFtCnicXZLLboMwEEX3
fIWX6SIC22BaKUJqXlIWfahpP4DAJEVqDHLIIn9f3xnaSl0EHeOZ64Mz6Wq33vluTF9D3+xpVMfO
t4Eu/TU0pA506nyijWq7ZpxW/GzO9ZCksXd/u4x03vljv1gk6Vvcu4zhpmaPbX+guyR9CS2Fzp/U
7GO1j+v9dRi+6Ex+VFlSVaqlY8x5qofn+kwpd813bdzuxts8tvwVvN8GUobXWlSavqXLUDcUan+i
ZJFllVpst1VCvv23l08th2PzWYdYqmNpllldRTbMJgNb5vwBnDO7DbhgLnOwEzbgUmq24HthrnmQ
mgL8KO8teCnM+Stx4Jy1nLsGb6TXgbdSD0+dMRfI0eJfwlmLv8NZWvwNnLX4F8jX4p9zjvg7nKXF
P4ezFv+S88XfrcDib/m9+Of4Xi3+7h4s/pZzxN+VYPG3cDOTP2qM+Dt8oxF/yyz+BTzNdP/wN+Jv
ca4Rf4t8I/4WDma6/yV4uv+Sh2H61zEWmNufcVPNNYQ4ajzcPGOYrs7T7/wP/YAu/n0DHcbK9Apl
bmRzdHJlYW0KZW5kb2JqCgozMDYgMCBvYmoKPDwvVHlwZS9Gb250L1N1YnR5cGUvVHJ1ZVR5cGUv
QmFzZUZvbnQvQ0FBQUFBK1RpbWVzTmV3Um9tYW5QUy1Cb2xkTVQKL0ZpcnN0Q2hhciAwCi9MYXN0
Q2hhciA0MQovV2lkdGhzWzc3NyA1MDAgMjUwIDM4OSA1NTYgMzMzIDQ0MyA1MDAgNTU2IDU1NiA0
NDMgMjc3IDUwMCA5NDMgNTAwIDUwMAo1NTYgNTU2IDQ0MyAyNTAgNzIyIDcyMiA4MzMgNzIyIDM4
OSAyNzcgNTAwIDc3NyA1NTYgNTAwIDUwMCA1MDAKNjY2IDMzMyA1MDAgNzc3IDU1NiA1MDAgNTAw
IDUwMCA1NTYgNzIyIF0KL0ZvbnREZXNjcmlwdG9yIDMwNCAwIFIKL1RvVW5pY29kZSAzMDUgMCBS
Cj4+CmVuZG9iagoKMzA3IDAgb2JqCjw8L0xlbmd0aCAzMDggMCBSL0ZpbHRlci9GbGF0ZURlY29k
ZS9MZW5ndGgxIDI1MzY+PgpzdHJlYW0KeJztVv9vU1UUP7fta8eAbR0FR4p6Hw/YsK/7CuiSAc3W
jnXd1tJu+B4ukbfusZa0r03bLcyIoPELNnGJiTEk8gMSjTqDuR2/kPiLRonBuPgluEQj0Z/0F0nU
hB8kgp53+9gmEuMf4Ht973zOueeczz3nvXtfS4VpHdbBKbBDIJnV8h5CAI/PAEhjcqZExzfNCYh/
QFvsaH4qe7Vl4ScAWzte+lRm9uj8p90tAI4zOD6f0rXJ5vM3WgGEIOp7Umh45tajLtSfRH1bKls6
PkcuO1A/h3pNJpfUfDCGUHgbb86sdjzvsW/BCQgMdWpoWX3rycQ86l8A2D/J54ollDi0xuSj+YKe
b/L9dgH1S6gjLxDg08eKgDi5/v/xCrwML8IFCMN5UKENdoEMnXAEDoIEQegFET6Ey/AlfARvwPPw
KjwNr8E5YPAWBOAkPEvOwmb7krBfeAceE9wMZAYbIuyhmMIGZ1QG0v4m5vQpe1VuO6HSq4xsaG3y
MyLTb9k6n5/Z5EhcCUmq6Gd2Od1EWSCmiCyg+plDNkNFSXxCueZdVL3op9zyXle9ksgEn8L6Z1Q+
oKqYT5DXjx/2M6dc2UpOIzs9PT7uZYBpXHJlGzcFlk01cqObdrf52RqZnjBJPsY0lNm3hyXKHDsG
GcSUsl7WqAke8Yqi6i1zLV7VTMLa6uwavA0iZlwr0694Oetk2sZcvnGF0gNSv3aMKnRyoprC9Ftv
MiM1LdMD5X5NKtOyxOkkMzkLoCfWZxpYQDcVjKnjTHuXmkTRS5fK2AYMCuNsxqy5idytXpbokkUu
USWS8IqMqEoZCwpLZYmWw2VJMwOqIabwswbzMTTivN1mASZovKuAsikk7diR1ZWYoRtkLKL8gtm2
wUmp7GI0pvR4P8ARj3wRAiTQ20silxogCfxuOo8p5j2uSBM4e6nXi4JIvdj5QFxZAAp9yd4FQgkK
RpNss77lDtdGmaEV+4I3v/nW2vDdBNukMIYL3gWtFQJtPQsuR/31zopT+K5nwW5DCBW7aRZM84LL
2fxHzwIx7V1u0b1ddItBG729jZy5nRLGbr4bdCzifjBIrtiO2K9BHTyA7zg2YhF/hNW3MccSW7uI
v0oD8UF7B9navGP3rj1dnfdt2uhxOclh4+DB80Z2aHgoQq6MDOeMs9FhIz80AtVd5ujFruYDT7kf
r++5AQ/W8IW3+Pubr69eiLwa3PewtuqBca5Dt06ucrl7v7LZfoag7RsYRFzdKgnvTb2Vw4a6DTaZ
Zvud2Dp4bznP18s5CdSiRqwoF3xvYTvaf7SwA/EvFhZgPdy0sBNqiQs9iWMNJponbgsT8Njet7AN
6myfW9iO9msWdiD+1cL4JbELFnaCxy60JHfSzvb2bpqYNuhwOlnIFWeLJT1bpGEj2Vo7OhCKh2gw
GkrQkegoDSnhxCitxnR00MHpTFo36Ig2oZdqY/FQXyiIjj3+fSsRibG+vlAouBITzaRn0nqBDmiZ
TM6MCg+HeMhoPBwbCtGqwXLvosNaKZXWiuheLOqZrGYYtflUmgeg7LjjuJtGUlpGn6QDuaIxG83r
RmI2O5HLxPWp6YxWWDGsoEN6oZjOGbSjvbP14RUztOBq2okLpRPa8exGlIBpMFAOQxrHCpCDIszi
VQIdsigpbuwGjrTiwxuFAQhBHC+KyyeKMoFoBNEoyhAo6JvgeDVPB54UX7FpyCCHztlGQIMJxCXM
GuMZ+/AKWhl7wA/77smRwJe0j/ua3vfiiXKWGc5UQH0AmTJ45pa5wlhraBXLKLfFYIhbV3v8PXsX
75KGeVKYXeO9GeCyiFwZ7JaGtRnIkuceKwxVveMfGXcjiuCYOUMdJnk+s/8GPoEoRpm9SiDOYq9y
6BNHyxTvo4a13cvjv9r435x/OS6RP59j5CWIsJqYUiFkTq30m18r1oAfYk8cwSn1fvyqjCsq8/gA
/gKAxO1kCmVuZHN0cmVhbQplbmRvYmoKCjMwOCAwIG9iagoxNDY0CmVuZG9iagoKMzA5IDAgb2Jq
Cjw8L1R5cGUvRm9udERlc2NyaXB0b3IvRm9udE5hbWUvRkFBQUFBK09wZW5TeW1ib2wKL0ZsYWdz
IDQKL0ZvbnRCQm94Wy0xNzkgLTMxMiAxMDgzIDkxN10vSXRhbGljQW5nbGUgMAovQXNjZW50IDkx
NgovRGVzY2VudCAtMzEyCi9DYXBIZWlnaHQgOTE2Ci9TdGVtViA4MAovRm9udEZpbGUyIDMwNyAw
IFIKPj4KZW5kb2JqCgozMTAgMCBvYmoKPDwvTGVuZ3RoIDIyMS9GaWx0ZXIvRmxhdGVEZWNvZGU+
PgpzdHJlYW0KeJxdkEFPxCAQhe/8ijnuHja0nJsmZs0mPegaqz+AwrSS2IFM6aH/3ilWTTxA8njv
gzfoa/fYUcj6haPrMcMYyDMucWWHMOAUSNUGfHD5UGV3s01KC9tvS8a5ozE2jdKv4i2ZNzg9+Djg
Wek7e+RAE5zer73ofk3pE2ekDJVqW/A4yj1PNj3bGXWhLp0XO+TtIshf4G1LCKbo+ruKix6XZB2y
pQlVU1UtNLdbq5D8P+8ghtF9WJZkLUlTGVOyx+lO7WP9tAG3MkuTMnupsD8eCH+/J8W0U2V9AX6L
bXkKZW5kc3RyZWFtCmVuZG9iagoKMzExIDAgb2JqCjw8L1R5cGUvRm9udC9TdWJ0eXBlL1RydWVU
eXBlL0Jhc2VGb250L0ZBQUFBQStPcGVuU3ltYm9sCi9GaXJzdENoYXIgMAovTGFzdENoYXIgMQov
V2lkdGhzWzM2NSAzNTUgXQovRm9udERlc2NyaXB0b3IgMzA5IDAgUgovVG9Vbmljb2RlIDMxMCAw
IFIKPj4KZW5kb2JqCgozMTIgMCBvYmoKPDwvRjEgMjkxIDAgUi9GMiAzMDYgMCBSL0YzIDMwMSAw
IFIvRjQgMjk2IDAgUi9GNSAzMTEgMCBSCj4+CmVuZG9iagoKMzEzIDAgb2JqCjw8L0ZvbnQgMzEy
IDAgUgovUHJvY1NldFsvUERGL1RleHRdCj4+CmVuZG9iagoKMSAwIG9iago8PC9UeXBlL1BhZ2Uv
UGFyZW50IDI4NiAwIFIvUmVzb3VyY2VzIDMxMyAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1N0
cnVjdFBhcmVudHMgMAovR3JvdXA8PC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0IvSSB0cnVl
Pj4vQ29udGVudHMgMiAwIFI+PgplbmRvYmoKCjExNCAwIG9iago8PC9UeXBlL1BhZ2UvUGFyZW50
IDI4NiAwIFIvUmVzb3VyY2VzIDMxMyAwIFIvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL0Fubm90c1sK
Mjg0IDAgUiAyODUgMCBSIF0KL1N0cnVjdFBhcmVudHMgMQovR3JvdXA8PC9TL1RyYW5zcGFyZW5j
eS9DUy9EZXZpY2VSR0IvSSB0cnVlPj4vQ29udGVudHMgMTE1IDAgUj4+CmVuZG9iagoKMjEwIDAg
b2JqCjw8L1R5cGUvUGFnZS9QYXJlbnQgMjg2IDAgUi9SZXNvdXJjZXMgMzEzIDAgUi9NZWRpYUJv
eFswIDAgNTk1IDg0Ml0vQW5ub3RzWwoyODIgMCBSIDI4MyAwIFIgXQovU3RydWN0UGFyZW50cyAy
Ci9Hcm91cDw8L1MvVHJhbnNwYXJlbmN5L0NTL0RldmljZVJHQi9JIHRydWU+Pi9Db250ZW50cyAy
MTEgMCBSPj4KZW5kb2JqCgozMTQgMCBvYmoKPDwvQ291bnQgMTEvRmlyc3QgMzE1IDAgUi9MYXN0
IDMyNSAwIFIKPj4KZW5kb2JqCgozMTUgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxGRUZGMDAzMTAw
MjAwMDQ5MDA2RTAwNzQwMDcyMDA2RjAwNjQwMDc1MDA2MzAwNzQwMDY5MDA2RjAwNkU+Ci9EZXN0
WzEgMCBSL1hZWiA3OC4zIDY4NC44IDBdL1BhcmVudCAzMTQgMCBSL05leHQgMzE2IDAgUj4+CmVu
ZG9iagoKMzE2IDAgb2JqCjw8L0NvdW50IDIvRmlyc3QgMzE3IDAgUi9MYXN0IDMxOCAwIFIKL1Rp
dGxlPEZFRkYwMDMyMDAyMDAwNEQwMDZGMDA3NDAwNjkwMDc2MDA2MTAwNzQwMDY5MDA2RjAwNkUw
MDIwMDA2MTAwNkUwMDY0MDAyMDAwNTMwMDYzMDA2RjAwNzAwMDY1PgovRGVzdFsxIDAgUi9YWVog
NzguMyA2MTAgMF0vUGFyZW50IDMxNCAwIFIvUHJldiAzMTUgMCBSL05leHQgMzE5IDAgUj4+CmVu
ZG9iagoKMzE3IDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAwMzIwMDJFMDAzMTAwMjAwMDUy
MDA0MTAwNDkwMDQ5MDAyMDAwNjkwMDY0MDA2OTAwNkYwMDZEPgovRGVzdFsxIDAgUi9YWVogNzkg
NTM3LjcgMF0vUGFyZW50IDMxNiAwIFIvTmV4dCAzMTggMCBSPj4KZW5kb2JqCgozMTggMCBvYmoK
PDwvQ291bnQgMC9UaXRsZTxGRUZGMDAzMjAwMkUwMDMyMDAyMDAwNDQwMDY1MDA2MzAwNkYwMDZE
MDA3MDAwNkYwMDczMDA2OTAwNzQwMDY5MDA2RjAwNkUwMDIwMDA2NDAwNjUwMDYzMDA2QzAwNjEw
MDcyMDA2MTAwNzQwMDY5MDA2RjAwNkUwMDczPgovRGVzdFsxMTQgMCBSL1hZWiA3OSA1NDEuOCAw
XS9QYXJlbnQgMzE2IDAgUi9QcmV2IDMxNyAwIFI+PgplbmRvYmoKCjMxOSAwIG9iago8PC9Db3Vu
dCAwL1RpdGxlPEZFRkYwMDMzMDAyMDAwNDkwMDZEMDA3MDAwNjEwMDYzMDA3NDAwMjAwMDRGMDA2
RTAwMjAwMDc0MDA2ODAwNjUwMDIwMDA1MzAwNzQwMDYxMDA2RTAwNjQwMDYxMDA3MjAwNjQ+Ci9E
ZXN0WzExNCAwIFIvWFlaIDc4LjMgMzYxLjggMF0vUGFyZW50IDMxNCAwIFIvUHJldiAzMTYgMCBS
L05leHQgMzIwIDAgUj4+CmVuZG9iagoKMzIwIDAgb2JqCjw8L0NvdW50IDAvVGl0bGU8RkVGRjAw
MzQwMDIwMDA0NDAwNjUwMDczMDA2OTAwNjcwMDZFMDAyMDAwNDQwMDY1MDA2MzAwNjkwMDczMDA2
OTAwNkYwMDZFMDA3Mz4KL0Rlc3RbMTE0IDAgUi9YWVogNzguMyAxODguMyAwXS9QYXJlbnQgMzE0
IDAgUi9QcmV2IDMxOSAwIFIvTmV4dCAzMjEgMCBSPj4KZW5kb2JqCgozMjEgMCBvYmoKPDwvQ291
bnQgMC9UaXRsZTxGRUZGMDAzNTAwMjAwMDU0MDA2NTAwNjMwMDY4MDA2RTAwNjkwMDYzMDA2MTAw
NkMwMDIwMDA1MzAwNzAwMDY1MDA2MzAwNjkwMDY2MDA2OTAwNjMwMDYxMDA3NDAwNjkwMDZGMDA2
RTAwNzM+Ci9EZXN0WzIxMCAwIFIvWFlaIDc4LjMgNDk0LjUgMF0vUGFyZW50IDMxNCAwIFIvUHJl
diAzMjAgMCBSL05leHQgMzIyIDAgUj4+CmVuZG9iagoKMzIyIDAgb2JqCjw8L0NvdW50IDEvRmly
c3QgMzIzIDAgUi9MYXN0IDMyMyAwIFIKL1RpdGxlPEZFRkYwMDM2MDAyMDAwNEYwMDcwMDA2NTAw
NkUwMDIwMDA1MTAwNzUwMDY1MDA3MzAwNzQwMDY5MDA2RjAwNkUwMDczPgovRGVzdFsyMTAgMCBS
L1hZWiA3OC4zIDQzNS40IDBdL1BhcmVudCAzMTQgMCBSL1ByZXYgMzIxIDAgUi9OZXh0IDMyNCAw
IFI+PgplbmRvYmoKCjMyMyAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM2MDAyRTAwMzEw
MDIwMDA0OTAwNzMwMDIwMDA3NDAwNjgwMDY1MDAyMDAwNjYwMDY1MDA2MTAwNzQwMDc1MDA3MjAw
NjUwMDIwMDA2OTAwNkQwMDcwMDA2QzAwNjUwMDZEMDA2NTAwNkUwMDc0MDA2MTAwNjIwMDZDMDA2
NTAwM0Y+Ci9EZXN0WzIxMCAwIFIvWFlaIDc5IDQwMC40IDBdL1BhcmVudCAzMjIgMCBSPj4KZW5k
b2JqCgozMjQgMCBvYmoKPDwvQ291bnQgMC9UaXRsZTxGRUZGMDAzNzAwMjAwMDUyMDA2NTAwNjYw
MDY1MDA3MjAwNjUwMDZFMDA2MzAwNjUwMDczPgovRGVzdFsyMTAgMCBSL1hZWiA3OC4zIDI3MS44
IDBdL1BhcmVudCAzMTQgMCBSL1ByZXYgMzIyIDAgUi9OZXh0IDMyNSAwIFI+PgplbmRvYmoKCjMy
NSAwIG9iago8PC9Db3VudCAwL1RpdGxlPEZFRkYwMDM4MDAyMDAwNDEwMDYzMDA2QjAwNkUwMDZG
MDA3NzAwNkMwMDY1MDA2NDAwNjcwMDY1MDA2RDAwNjUwMDZFMDA3NDAwNzM+Ci9EZXN0WzIxMCAw
IFIvWFlaIDc4LjMgMTkwLjUgMF0vUGFyZW50IDMxNCAwIFIvUHJldiAzMjQgMCBSPj4KZW5kb2Jq
CgozMjcgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoKCjUgMCBv
YmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1N0YW5kYXJkCi9QIDQgMCBSCi9QZyAxIDAgUgovQSAz
MjcgMCBSCj4+CmVuZG9iagoKMTAgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1Ag
OSAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1swIF0KPj4KZW5kb2JqCgozMjggMCBvYmoK
PDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoKCjkgMCBvYmoKPDwvVHlwZS9T
dHJ1Y3RFbGVtCi9TL1RhYmxlIzIwQ29udGVudHMKL1AgOCAwIFIKL1BnIDEgMCBSCi9BIDMyOCAw
IFIKL0tbMTAgMCBSIF0KPj4KZW5kb2JqCgozMjkgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVu
dC9JbmxpbmUKL1dpZHRoIDIwOS43Ci9IZWlnaHQgMjUuMwo+PgplbmRvYmoKCjggMCBvYmoKPDwv
VHlwZS9TdHJ1Y3RFbGVtCi9TL1RECi9QIDcgMCBSCi9QZyAxIDAgUgovQSAzMjkgMCBSCi9LWzkg
MCBSIF0KPj4KZW5kb2JqCgoxMyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAx
MiAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1sxIF0KPj4KZW5kb2JqCgozMzAgMCBvYmoK
PDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoKCjEyIDAgb2JqCjw8L1R5cGUv
U3RydWN0RWxlbQovUy9UYWJsZSMyMENvbnRlbnRzCi9QIDExIDAgUgovUGcgMSAwIFIKL0EgMzMw
IDAgUgovS1sxMyAwIFIgXQo+PgplbmRvYmoKCjMzMSAwIG9iago8PC9PL0xheW91dAovUGxhY2Vt
ZW50L0lubGluZQovV2lkdGggNzM3LjIKL0hlaWdodCAyNS4zCj4+CmVuZG9iagoKMTEgMCBvYmoK
PDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RECi9QIDcgMCBSCi9QZyAxIDAgUgovQSAzMzEgMCBSCi9L
WzEyIDAgUiBdCj4+CmVuZG9iagoKMzMyIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxv
Y2sKPj4KZW5kb2JqCgo3IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UUgovUCA2IDAgUgov
UGcgMSAwIFIKL0EgMzMyIDAgUgovS1s4IDAgUiAxMSAwIFIgXQo+PgplbmRvYmoKCjE3IDAgb2Jq
Cjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE2IDAgUgovUGcgMSAwIFIKL0xhbmcoZW4t
VVMpCi9LWzIgXQo+PgplbmRvYmoKCjMzMyAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Js
b2NrCj4+CmVuZG9iagoKMTYgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RhYmxlIzIwQ29u
dGVudHMKL1AgMTUgMCBSCi9QZyAxIDAgUgovQSAzMzMgMCBSCi9LWzE3IDAgUiBdCj4+CmVuZG9i
agoKMzM0IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvSW5saW5lCi9XaWR0aCAyMDkuNwov
SGVpZ2h0IDI1LjMKPj4KZW5kb2JqCgoxNSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVEQK
L1AgMTQgMCBSCi9QZyAxIDAgUgovQSAzMzQgMCBSCi9LWzE2IDAgUiBdCj4+CmVuZG9iagoKMjAg
MCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTkgMCBSCi9QZyAxIDAgUgovTGFu
Zyhlbi1VUykKL0tbMyBdCj4+CmVuZG9iagoKMzM1IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1l
bnQvQmxvY2sKPj4KZW5kb2JqCgoxOSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGFibGUj
MjBDb250ZW50cwovUCAxOCAwIFIKL1BnIDEgMCBSCi9BIDMzNSAwIFIKL0tbMjAgMCBSIF0KPj4K
ZW5kb2JqCgozMzYgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9JbmxpbmUKL1dpZHRoIDcz
Ny4yCi9IZWlnaHQgMjUuMwo+PgplbmRvYmoKCjE4IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQov
Uy9URAovUCAxNCAwIFIKL1BnIDEgMCBSCi9BIDMzNiAwIFIKL0tbMTkgMCBSIF0KPj4KZW5kb2Jq
CgozMzcgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoKCjE0IDAg
b2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UUgovUCA2IDAgUgovUGcgMSAwIFIKL0EgMzM3IDAg
UgovS1sxNSAwIFIgMTggMCBSIF0KPj4KZW5kb2JqCgoyNCAwIG9iago8PC9UeXBlL1N0cnVjdEVs
ZW0KL1MvU3BhbgovUCAyMyAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1s0IF0KPj4KZW5k
b2JqCgozMzggMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoKCjIz
IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UYWJsZSMyMENvbnRlbnRzCi9QIDIyIDAgUgov
UGcgMSAwIFIKL0EgMzM4IDAgUgovS1syNCAwIFIgXQo+PgplbmRvYmoKCjMzOSAwIG9iago8PC9P
L0xheW91dAovUGxhY2VtZW50L0lubGluZQovV2lkdGggMjA5LjcKL0hlaWdodCAyNS4zCj4+CmVu
ZG9iagoKMjIgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RECi9QIDIxIDAgUgovUGcgMSAw
IFIKL0EgMzM5IDAgUgovS1syMyAwIFIgXQo+PgplbmRvYmoKCjI3IDAgb2JqCjw8L1R5cGUvU3Ry
dWN0RWxlbQovUy9TcGFuCi9QIDI2IDAgUgovUGcgMSAwIFIKL0xhbmcoZW4tVVMpCi9LWzUgXQo+
PgplbmRvYmoKCjM0MCAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCj4+CmVuZG9i
agoKMjYgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RhYmxlIzIwQ29udGVudHMKL1AgMjUg
MCBSCi9QZyAxIDAgUgovQSAzNDAgMCBSCi9LWzI3IDAgUiBdCj4+CmVuZG9iagoKMzQxIDAgb2Jq
Cjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvSW5saW5lCi9XaWR0aCA3MzcuMgovSGVpZ2h0IDI1LjMK
Pj4KZW5kb2JqCgoyNSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVEQKL1AgMjEgMCBSCi9Q
ZyAxIDAgUgovQSAzNDEgMCBSCi9LWzI2IDAgUiBdCj4+CmVuZG9iagoKMzQyIDAgb2JqCjw8L08v
TGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKPj4KZW5kb2JqCgoyMSAwIG9iago8PC9UeXBlL1N0cnVj
dEVsZW0KL1MvVFIKL1AgNiAwIFIKL1BnIDEgMCBSCi9BIDM0MiAwIFIKL0tbMjIgMCBSIDI1IDAg
UiBdCj4+CmVuZG9iagoKMzEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMzAg
MCBSCi9QZyAxIDAgUgovTGFuZyhlbi1VUykKL0tbNiBdCj4+CmVuZG9iagoKMzQzIDAgb2JqCjw8
L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKPj4KZW5kb2JqCgozMCAwIG9iago8PC9UeXBlL1N0
cnVjdEVsZW0KL1MvVGFibGUjMjBDb250ZW50cwovUCAyOSAwIFIKL1BnIDEgMCBSCi9BIDM0MyAw
IFIKL0tbMzEgMCBSIF0KPj4KZW5kb2JqCgozNDQgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVu
dC9JbmxpbmUKL1dpZHRoIDIwOS43Ci9IZWlnaHQgMjUuMwo+PgplbmRvYmoKCjI5IDAgb2JqCjw8
L1R5cGUvU3RydWN0RWxlbQovUy9URAovUCAyOCAwIFIKL1BnIDEgMCBSCi9BIDM0NCAwIFIKL0tb
MzAgMCBSIF0KPj4KZW5kb2JqCgozNCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3Bhbgov
UCAzMyAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1s3IF0KPj4KZW5kb2JqCgozNDUgMCBv
YmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoKCjMzIDAgb2JqCjw8L1R5
cGUvU3RydWN0RWxlbQovUy9UYWJsZSMyMENvbnRlbnRzCi9QIDMyIDAgUgovUGcgMSAwIFIKL0Eg
MzQ1IDAgUgovS1szNCAwIFIgXQo+PgplbmRvYmoKCjM0NiAwIG9iago8PC9PL0xheW91dAovUGxh
Y2VtZW50L0lubGluZQovV2lkdGggNzM3LjIKL0hlaWdodCAyNS4zCj4+CmVuZG9iagoKMzIgMCBv
YmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RECi9QIDI4IDAgUgovUGcgMSAwIFIKL0EgMzQ2IDAg
UgovS1szMyAwIFIgXQo+PgplbmRvYmoKCjM0NyAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50
L0Jsb2NrCj4+CmVuZG9iagoKMjggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RSCi9QIDYg
MCBSCi9QZyAxIDAgUgovQSAzNDcgMCBSCi9LWzI5IDAgUiAzMiAwIFIgXQo+PgplbmRvYmoKCjM4
IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDM3IDAgUgovUGcgMSAwIFIKL0xh
bmcoZW4tVVMpCi9LWzggXQo+PgplbmRvYmoKCjM0OCAwIG9iago8PC9PL0xheW91dAovUGxhY2Vt
ZW50L0Jsb2NrCj4+CmVuZG9iagoKMzcgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RhYmxl
IzIwQ29udGVudHMKL1AgMzYgMCBSCi9QZyAxIDAgUgovQSAzNDggMCBSCi9LWzM4IDAgUiBdCj4+
CmVuZG9iagoKMzQ5IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvSW5saW5lCi9XaWR0aCAy
MDkuNwovSGVpZ2h0IDI1LjMKPj4KZW5kb2JqCgozNiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0K
L1MvVEQKL1AgMzUgMCBSCi9QZyAxIDAgUgovQSAzNDkgMCBSCi9LWzM3IDAgUiBdCj4+CmVuZG9i
agoKNDEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgNDAgMCBSCi9QZyAxIDAg
UgovTGFuZyhlbi1VUykKL0tbOSBdCj4+CmVuZG9iagoKMzUwIDAgb2JqCjw8L08vTGF5b3V0Ci9Q
bGFjZW1lbnQvQmxvY2sKPj4KZW5kb2JqCgo0MCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1Mv
VGFibGUjMjBDb250ZW50cwovUCAzOSAwIFIKL1BnIDEgMCBSCi9BIDM1MCAwIFIKL0tbNDEgMCBS
IF0KPj4KZW5kb2JqCgozNTEgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9JbmxpbmUKL1dp
ZHRoIDczNy4yCi9IZWlnaHQgMjUuMwo+PgplbmRvYmoKCjM5IDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9URAovUCAzNSAwIFIKL1BnIDEgMCBSCi9BIDM1MSAwIFIKL0tbNDAgMCBSIF0KPj4K
ZW5kb2JqCgozNTIgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoK
CjM1IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UUgovUCA2IDAgUgovUGcgMSAwIFIKL0Eg
MzUyIDAgUgovS1szNiAwIFIgMzkgMCBSIF0KPj4KZW5kb2JqCgo0NSAwIG9iago8PC9UeXBlL1N0
cnVjdEVsZW0KL1MvU3BhbgovUCA0NCAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1sxMCBd
Cj4+CmVuZG9iagoKMzUzIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKPj4KZW5k
b2JqCgo0NCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGFibGUjMjBDb250ZW50cwovUCA0
MyAwIFIKL1BnIDEgMCBSCi9BIDM1MyAwIFIKL0tbNDUgMCBSIF0KPj4KZW5kb2JqCgozNTQgMCBv
YmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9JbmxpbmUKL1dpZHRoIDIwOS43Ci9IZWlnaHQgMjUu
Mwo+PgplbmRvYmoKCjQzIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9URAovUCA0MiAwIFIK
L1BnIDEgMCBSCi9BIDM1NCAwIFIKL0tbNDQgMCBSIF0KPj4KZW5kb2JqCgozNTUgMCBvYmoKPDwv
Ty9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawo+PgplbmRvYmoKCjQ3IDAgb2JqCjw8L1R5cGUvU3Ry
dWN0RWxlbQovUy9UYWJsZSMyMENvbnRlbnRzCi9QIDQ2IDAgUgovUGcgMSAwIFIKL0EgMzU1IDAg
UgovS1sxMSBdCj4+CmVuZG9iagoKMzU2IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvSW5s
aW5lCi9XaWR0aCA3MzcuMgovSGVpZ2h0IDI1LjMKPj4KZW5kb2JqCgo0NiAwIG9iago8PC9UeXBl
L1N0cnVjdEVsZW0KL1MvVEQKL1AgNDIgMCBSCi9QZyAxIDAgUgovQSAzNTYgMCBSCi9LWzQ3IDAg
UiBdCj4+CmVuZG9iagoKMzU3IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKPj4K
ZW5kb2JqCgo0MiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVFIKL1AgNiAwIFIKL1BnIDEg
MCBSCi9BIDM1NyAwIFIKL0tbNDMgMCBSIDQ2IDAgUiBdCj4+CmVuZG9iagoKMzU4IDAgb2JqCjw8
L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5kZW50IDEwLjIKL0VuZEluZGVudCA2
LjcKL1dpZHRoIDk2My44Ci9IZWlnaHQgMTUxLjgKL0JCb3hbNTYuNyA2OTYuNyA1MzguNiA3NzIu
Nl0KPj4KZW5kb2JqCgo2IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UYWJsZQovUCA0IDAg
UgovUGcgMSAwIFIKL0EgMzU4IDAgUgovS1s3IDAgUiAxNCAwIFIgMjEgMCBSIDI4IDAgUiAzNSAw
IFIgNDIgMCBSIF0KPj4KZW5kb2JqCgo0OSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3Bh
bgovUCA0OCAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1sxMyBdCj4+CmVuZG9iagoKMzU5
IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQmVmb3JlIDI0Cj4+CmVu
ZG9iagoKNDggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0gxCi9QIDQgMCBSCi9QZyAxIDAg
UgovQSAzNTkgMCBSCi9LWzEyIDQ5IDAgUiBdCj4+CmVuZG9iagoKNTEgMCBvYmoKPDwvVHlwZS9T
dHJ1Y3RFbGVtCi9TL1NwYW4KL1AgNTAgMCBSCi9QZyAxIDAgUgovTGFuZyhlbi1VUykKL0tbMTQg
XQo+PgplbmRvYmoKCjUyIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2RpY2UjMjBpbmxp
bmUKL1AgNTAgMCBSCi9QZyAxIDAgUgovTGFuZyhlbi1VUykKL0tbMTUgXQo+PgplbmRvYmoKCjUz
IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDUwIDAgUgovUGcgMSAwIFIKL0xh
bmcoZW4tVVMpCi9LWzE2IF0KPj4KZW5kb2JqCgo1NCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0K
L1MvU3BhbgovUCA1MCAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1sxNyBdCj4+CmVuZG9i
agoKMzYwIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQmVmb3JlIDEy
Cj4+CmVuZG9iagoKNTAgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBib2R5Ci9Q
IDQgMCBSCi9QZyAxIDAgUgovQSAzNjAgMCBSCi9LWzUxIDAgUiA1MiAwIFIgNTMgMCBSIDU0IDAg
UiBdCj4+CmVuZG9iagoKNTYgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgNTUg
MCBSCi9QZyAxIDAgUgovTGFuZyhlbi1VUykKL0tbMTkgXQo+PgplbmRvYmoKCjM2MSAwIG9iago8
PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9yZSA0Mwo+PgplbmRvYmoKCjU1
IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9IMQovUCA0IDAgUgovUGcgMSAwIFIKL0EgMzYx
IDAgUgovS1sxOCA1NiAwIFIgXQo+PgplbmRvYmoKCjU4IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9TcGFuCi9QIDU3IDAgUgovUGcgMSAwIFIKL0xhbmcoZW4tVVMpCi9LWzIwIF0KPj4KZW5k
b2JqCgo1OSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCA1NyAwIFIKL1BnIDEg
MCBSCi9MYW5nKGVuLVVTKQovS1syMSBdCj4+CmVuZG9iagoKMzYyIDAgb2JqCjw8L08vTGF5b3V0
Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQmVmb3JlIDEyCj4+CmVuZG9iagoKNTcgMCBvYmoKPDwv
VHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBib2R5Ci9QIDQgMCBSCi9QZyAxIDAgUgovQSAzNjIg
MCBSCi9LWzU4IDAgUiA1OSAwIFIgXQo+PgplbmRvYmoKCjYxIDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9TcGFuCi9QIDYwIDAgUgovUGcgMSAwIFIKL0xhbmcoZW4tVVMpCi9LWzIzIF0KPj4K
ZW5kb2JqCgozNjMgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZv
cmUgMzkKPj4KZW5kb2JqCgo2MCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvSDIKL1AgNCAw
IFIKL1BnIDEgMCBSCi9BIDM2MyAwIFIKL0tbMjIgNjEgMCBSIF0KPj4KZW5kb2JqCgo2MyAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCA2MiAwIFIKL1BnIDEgMCBSCi9MYW5nKGVu
LVVTKQovS1syNCBdCj4+CmVuZG9iagoKNjQgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1Nw
YW4KL1AgNjIgMCBSCi9QZyAxIDAgUgovTGFuZyhlbi1VUykKL0tbMjUgXQo+PgplbmRvYmoKCjM2
NCAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCj4+CmVuZG9iagoKNjIgMCBvYmoK
PDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBib2R5Ci9QIDQgMCBSCi9QZyAxIDAgUgovQSAz
NjQgMCBSCi9LWzYzIDAgUiA2NCAwIFIgXQo+PgplbmRvYmoKCjY2IDAgb2JqCjw8L1R5cGUvU3Ry
dWN0RWxlbQovUy9TcGFuCi9QIDY1IDAgUgovUGcgMSAwIFIKL0xhbmcoenh4KQovS1syNiBdCj4+
CmVuZG9iagoKMzY1IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQmVm
b3JlIDMyLjgKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjY1IDAg
b2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2RpY2UKL1AgNCAwIFIKL1BnIDEgMCBSCi9BIDM2
NSAwIFIKL0tbNjYgMCBSIF0KPj4KZW5kb2JqCgo2OCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0K
L1MvU3BhbgovUCA2NyAwIFIKL1BnIDEgMCBSCi9MYW5nKHp4eCkKL0tbMjcgXQo+PgplbmRvYmoK
CjM2NiAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TdGFydEluZGVudCAyLjUK
L0VuZEluZGVudCAyLjUKPj4KZW5kb2JqCgo2NyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1Mv
Q29kaWNlCi9QIDQgMCBSCi9QZyAxIDAgUgovQSAzNjYgMCBSCi9LWzY4IDAgUiBdCj4+CmVuZG9i
agoKNzAgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgNjkgMCBSCi9QZyAxIDAg
UgovTGFuZyh6eHgpCi9LWzI4IF0KPj4KZW5kb2JqCgozNjcgMCBvYmoKPDwvTy9MYXlvdXQKL1Bs
YWNlbWVudC9CbG9jawovU3RhcnRJbmRlbnQgMi41Ci9FbmRJbmRlbnQgMi41Cj4+CmVuZG9iagoK
NjkgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAgUgovUGcgMSAwIFIK
L0EgMzY3IDAgUgovS1s3MCAwIFIgXQo+PgplbmRvYmoKCjcyIDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9TcGFuCi9QIDcxIDAgUgovUGcgMSAwIFIKL0xhbmcoenh4KQovS1syOSBdCj4+CmVu
ZG9iagoKMzY4IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5kZW50
IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjcxIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9Db2RpY2UKL1AgNCAwIFIKL1BnIDEgMCBSCi9BIDM2OCAwIFIKL0tbNzIgMCBSIF0KPj4K
ZW5kb2JqCgo3NCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCA3MyAwIFIKL1Bn
IDEgMCBSCi9MYW5nKHp4eCkKL0tbMzAgXQo+PgplbmRvYmoKCjM2OSAwIG9iago8PC9PL0xheW91
dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUFmdGVyIDIuNQovU3RhcnRJbmRlbnQgMi41Ci9FbmRJ
bmRlbnQgMi41Cj4+CmVuZG9iagoKNzMgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGlj
ZQovUCA0IDAgUgovUGcgMSAwIFIKL0EgMzY5IDAgUgovS1s3NCAwIFIgXQo+PgplbmRvYmoKCjc2
IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDc1IDAgUgovUGcgMSAwIFIKL0xh
bmcoZW4tVVMpCi9LWzMxIF0KPj4KZW5kb2JqCgo3NyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0K
L1MvU3BhbgovUCA3NSAwIFIKL1BnIDEgMCBSCi9MYW5nKGVuLVVTKQovS1szMiBdCj4+CmVuZG9i
agoKNzggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgNzUgMCBSCi9QZyAxIDAg
UgovTGFuZyhlbi1VUykKL0tbMzMgXQo+PgplbmRvYmoKCjc5IDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9Db2RpY2UjMjBpbmxpbmUKL1AgNzUgMCBSCi9QZyAxIDAgUgovTGFuZyhlbi1VUykK
L0tbMzQgXQo+PgplbmRvYmoKCjgwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9Q
IDc1IDAgUgovUGcgMSAwIFIKL0xhbmcoZW4tVVMpCi9LWzM1IF0KPj4KZW5kb2JqCgozNzAgMCBv
YmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgMTQuMgo+PgplbmRv
YmoKCjc1IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UZXh0IzIwYm9keQovUCA0IDAgUgov
UGcgMSAwIFIKL0EgMzcwIDAgUgovS1s3NiAwIFIgNzcgMCBSIDc4IDAgUiA3OSAwIFIgODAgMCBS
IF0KPj4KZW5kb2JqCgo4MiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCA4MSAw
IFIKL1BnIDEgMCBSCi9MYW5nKHp4eCkKL0tbMzYgXQo+PgplbmRvYmoKCjM3MSAwIG9iago8PC9P
L0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9yZSAzMwovU3RhcnRJbmRlbnQgMi41
Ci9FbmRJbmRlbnQgMi41Cj4+CmVuZG9iagoKODEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9T
L0NvZGljZQovUCA0IDAgUgovUGcgMSAwIFIKL0EgMzcxIDAgUgovS1s4MiAwIFIgXQo+PgplbmRv
YmoKCjg0IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDgzIDAgUgovUGcgMSAw
IFIKL0xhbmcoenh4KQovS1szNyBdCj4+CmVuZG9iagoKMzcyIDAgb2JqCjw8L08vTGF5b3V0Ci9Q
bGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoK
CjgzIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2RpY2UKL1AgNCAwIFIKL1BnIDEgMCBS
Ci9BIDM3MiAwIFIKL0tbODQgMCBSIF0KPj4KZW5kb2JqCgo4NiAwIG9iago8PC9UeXBlL1N0cnVj
dEVsZW0KL1MvU3BhbgovUCA4NSAwIFIKL1BnIDEgMCBSCi9MYW5nKHp4eCkKL0tbMzggXQo+Pgpl
bmRvYmoKCjM3MyAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TdGFydEluZGVu
dCAyLjUKL0VuZEluZGVudCAyLjUKPj4KZW5kb2JqCgo4NSAwIG9iago8PC9UeXBlL1N0cnVjdEVs
ZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxIDAgUgovQSAzNzMgMCBSCi9LWzg2IDAgUiBdCj4+
CmVuZG9iagoKODggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgODcgMCBSCi9Q
ZyAxIDAgUgovTGFuZyh6eHgpCi9LWzM5IF0KPj4KZW5kb2JqCgozNzQgMCBvYmoKPDwvTy9MYXlv
dXQKL1BsYWNlbWVudC9CbG9jawovU3RhcnRJbmRlbnQgMi41Ci9FbmRJbmRlbnQgMi41Cj4+CmVu
ZG9iagoKODcgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAgUgovUGcg
MSAwIFIKL0EgMzc0IDAgUgovS1s4OCAwIFIgXQo+PgplbmRvYmoKCjkwIDAgb2JqCjw8L1R5cGUv
U3RydWN0RWxlbQovUy9TcGFuCi9QIDg5IDAgUgovUGcgMSAwIFIKL0xhbmcoenh4KQovS1s0MCBd
Cj4+CmVuZG9iagoKMzc1IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0
SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjg5IDAgb2JqCjw8L1R5cGUvU3Ry
dWN0RWxlbQovUy9Db2RpY2UKL1AgNCAwIFIKL1BnIDEgMCBSCi9BIDM3NSAwIFIKL0tbOTAgMCBS
IF0KPj4KZW5kb2JqCgo5MiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCA5MSAw
IFIKL1BnIDEgMCBSCi9MYW5nKHp4eCkKL0tbNDEgXQo+PgplbmRvYmoKCjM3NiAwIG9iago8PC9P
L0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TdGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUK
Pj4KZW5kb2JqCgo5MSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBS
Ci9QZyAxIDAgUgovQSAzNzYgMCBSCi9LWzkyIDAgUiBdCj4+CmVuZG9iagoKOTQgMCBvYmoKPDwv
VHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgOTMgMCBSCi9QZyAxIDAgUgovTGFuZyh6eHgpCi9L
WzQyIF0KPj4KZW5kb2JqCgozNzcgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawov
U3RhcnRJbmRlbnQgMi41Ci9FbmRJbmRlbnQgMi41Cj4+CmVuZG9iagoKOTMgMCBvYmoKPDwvVHlw
ZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAgUgovUGcgMSAwIFIKL0EgMzc3IDAgUgovS1s5
NCAwIFIgXQo+PgplbmRvYmoKCjk2IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9Q
IDk1IDAgUgovUGcgMSAwIFIKL0xhbmcoenh4KQovS1s0MyBdCj4+CmVuZG9iagoKMzc4IDAgb2Jq
Cjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50
IDIuNQo+PgplbmRvYmoKCjk1IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2RpY2UKL1Ag
NCAwIFIKL1BnIDEgMCBSCi9BIDM3OCAwIFIKL0tbOTYgMCBSIF0KPj4KZW5kb2JqCgo5OCAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCA5NyAwIFIKL1BnIDEgMCBSCi9MYW5nKHp4
eCkKL0tbNDQgXQo+PgplbmRvYmoKCjM3OSAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Js
b2NrCi9TdGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUKPj4KZW5kb2JqCgo5NyAwIG9iago8
PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxIDAgUgovQSAzNzkgMCBS
Ci9LWzk4IDAgUiBdCj4+CmVuZG9iagoKMTAwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9T
cGFuCi9QIDk5IDAgUgovUGcgMSAwIFIKL0xhbmcoenh4KQovS1s0NSBdCj4+CmVuZG9iagoKMzgw
IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5k
SW5kZW50IDIuNQo+PgplbmRvYmoKCjk5IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2Rp
Y2UKL1AgNCAwIFIKL1BnIDEgMCBSCi9BIDM4MCAwIFIKL0tbMTAwIDAgUiBdCj4+CmVuZG9iagoK
MTAyIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDEwMSAwIFIKL1BnIDEgMCBS
Ci9MYW5nKHp4eCkKL0tbNDYgXQo+PgplbmRvYmoKCjM4MSAwIG9iago8PC9PL0xheW91dAovUGxh
Y2VtZW50L0Jsb2NrCi9TdGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUKPj4KZW5kb2JqCgox
MDEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAgUgovUGcgMSAwIFIK
L0EgMzgxIDAgUgovS1sxMDIgMCBSIF0KPj4KZW5kb2JqCgoxMDQgMCBvYmoKPDwvVHlwZS9TdHJ1
Y3RFbGVtCi9TL1NwYW4KL1AgMTAzIDAgUgovUGcgMSAwIFIKL0xhbmcoenh4KQovS1s0NyBdCj4+
CmVuZG9iagoKMzgyIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5k
ZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjEwMyAwIG9iago8PC9UeXBlL1N0cnVj
dEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxIDAgUgovQSAzODIgMCBSCi9LWzEwNCAwIFIg
XQo+PgplbmRvYmoKCjEwNiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxMDUg
MCBSCi9QZyAxIDAgUgovTGFuZyh6eHgpCi9LWzQ4IF0KPj4KZW5kb2JqCgozODMgMCBvYmoKPDwv
Ty9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3RhcnRJbmRlbnQgMi41Ci9FbmRJbmRlbnQgMi41
Cj4+CmVuZG9iagoKMTA1IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2RpY2UKL1AgNCAw
IFIKL1BnIDEgMCBSCi9BIDM4MyAwIFIKL0tbMTA2IDAgUiBdCj4+CmVuZG9iagoKMTA4IDAgb2Jq
Cjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDEwNyAwIFIKL1BnIDEgMCBSCi9MYW5nKHp4
eCkKL0tbNDkgXQo+PgplbmRvYmoKCjM4NCAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Js
b2NrCi9TdGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUKPj4KZW5kb2JqCgoxMDcgMCBvYmoK
PDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAgUgovUGcgMSAwIFIKL0EgMzg0IDAg
UgovS1sxMDggMCBSIF0KPj4KZW5kb2JqCgoxMTAgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9T
L1NwYW4KL1AgMTA5IDAgUgovUGcgMSAwIFIKL0xhbmcoenh4KQovS1s1MCBdCj4+CmVuZG9iagoK
Mzg1IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQWZ0ZXIgMi41Ci9T
dGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUKPj4KZW5kb2JqCgoxMDkgMCBvYmoKPDwvVHlw
ZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAgUgovUGcgMSAwIFIKL0EgMzg1IDAgUgovS1sx
MTAgMCBSIF0KPj4KZW5kb2JqCgoxMTIgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4K
L1AgMTExIDAgUgovUGcgMSAwIFIKL0xhbmcoZW4tVVMpCi9LWzUxIF0KPj4KZW5kb2JqCgoxMTMg
MCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTExIDAgUgovUGcgMSAwIFIKL0xh
bmcoZW4tVVMpCi9LWzUyIF0KPj4KZW5kb2JqCgozODYgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNl
bWVudC9CbG9jawovU3BhY2VCZWZvcmUgMTQuMgo+PgplbmRvYmoKCjExMSAwIG9iago8PC9UeXBl
L1N0cnVjdEVsZW0KL1MvVGV4dCMyMGJvZHkKL1AgNCAwIFIKL1BnIDEgMCBSCi9BIDM4NiAwIFIK
L0tbMTEyIDAgUiAxMTMgMCBSIF0KPj4KZW5kb2JqCgoxMTggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RF
bGVtCi9TL1NwYW4KL1AgMTE3IDAgUgovUGcgMTE0IDAgUgovTGFuZyh6eHgpCi9LWzAgXQo+Pgpl
bmRvYmoKCjM4NyAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9y
ZSAyLjUKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjExNyAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxMTQgMCBSCi9BIDM4
NyAwIFIKL0tbMTE4IDAgUiBdCj4+CmVuZG9iagoKMTIwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9TcGFuCi9QIDExOSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoenh4KQovS1sxIF0KPj4KZW5k
b2JqCgozODggMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3RhcnRJbmRlbnQg
Mi41Ci9FbmRJbmRlbnQgMi41Cj4+CmVuZG9iagoKMTE5IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9Db2RpY2UKL1AgNCAwIFIKL1BnIDExNCAwIFIKL0EgMzg4IDAgUgovS1sxMjAgMCBSIF0K
Pj4KZW5kb2JqCgoxMjIgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTIxIDAg
UgovUGcgMTE0IDAgUgovTGFuZyh6eHgpCi9LWzIgXQo+PgplbmRvYmoKCjM4OSAwIG9iago8PC9P
L0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TdGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUK
Pj4KZW5kb2JqCgoxMjEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAg
UgovUGcgMTE0IDAgUgovQSAzODkgMCBSCi9LWzEyMiAwIFIgXQo+PgplbmRvYmoKCjEyNCAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxMjMgMCBSCi9QZyAxMTQgMCBSCi9MYW5n
KHp4eCkKL0tbMyBdCj4+CmVuZG9iagoKMzkwIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQv
QmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjEyMyAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxMTQgMCBSCi9BIDM5
MCAwIFIKL0tbMTI0IDAgUiBdCj4+CmVuZG9iagoKMTI2IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9TcGFuCi9QIDEyNSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoenh4KQovS1s0IF0KPj4KZW5k
b2JqCgozOTEgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3RhcnRJbmRlbnQg
Mi41Ci9FbmRJbmRlbnQgMi41Cj4+CmVuZG9iagoKMTI1IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9Db2RpY2UKL1AgNCAwIFIKL1BnIDExNCAwIFIKL0EgMzkxIDAgUgovS1sxMjYgMCBSIF0K
Pj4KZW5kb2JqCgoxMjggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTI3IDAg
UgovUGcgMTE0IDAgUgovTGFuZyh6eHgpCi9LWzUgXQo+PgplbmRvYmoKCjM5MiAwIG9iago8PC9P
L0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TdGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUK
Pj4KZW5kb2JqCgoxMjcgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAg
UgovUGcgMTE0IDAgUgovQSAzOTIgMCBSCi9LWzEyOCAwIFIgXQo+PgplbmRvYmoKCjEzMCAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxMjkgMCBSCi9QZyAxMTQgMCBSCi9MYW5n
KHp4eCkKL0tbNiBdCj4+CmVuZG9iagoKMzkzIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQv
QmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjEyOSAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxMTQgMCBSCi9BIDM5
MyAwIFIKL0tbMTMwIDAgUiBdCj4+CmVuZG9iagoKMTMyIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9TcGFuCi9QIDEzMSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoenh4KQovS1s3IF0KPj4KZW5k
b2JqCgozOTQgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3RhcnRJbmRlbnQg
Mi41Ci9FbmRJbmRlbnQgMi41Cj4+CmVuZG9iagoKMTMxIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9Db2RpY2UKL1AgNCAwIFIKL1BnIDExNCAwIFIKL0EgMzk0IDAgUgovS1sxMzIgMCBSIF0K
Pj4KZW5kb2JqCgoxMzQgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTMzIDAg
UgovUGcgMTE0IDAgUgovTGFuZyh6eHgpCi9LWzggXQo+PgplbmRvYmoKCjM5NSAwIG9iago8PC9P
L0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TdGFydEluZGVudCAyLjUKL0VuZEluZGVudCAyLjUK
Pj4KZW5kb2JqCgoxMzMgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZQovUCA0IDAg
UgovUGcgMTE0IDAgUgovQSAzOTUgMCBSCi9LWzEzNCAwIFIgXQo+PgplbmRvYmoKCjEzNiAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxMzUgMCBSCi9QZyAxMTQgMCBSCi9MYW5n
KHp4eCkKL0tbOSBdCj4+CmVuZG9iagoKMzk2IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQv
QmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjEzNSAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxMTQgMCBSCi9BIDM5
NiAwIFIKL0tbMTM2IDAgUiBdCj4+CmVuZG9iagoKMTM4IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9TcGFuCi9QIDEzNyAwIFIKL1BnIDExNCAwIFIKL0xhbmcoenh4KQovS1sxMCBdCj4+CmVu
ZG9iagoKMzk3IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5kZW50
IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjEzNyAwIG9iago8PC9UeXBlL1N0cnVjdEVs
ZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxMTQgMCBSCi9BIDM5NyAwIFIKL0tbMTM4IDAgUiBd
Cj4+CmVuZG9iagoKMTQwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDEzOSAw
IFIKL1BnIDExNCAwIFIKL0xhbmcoenh4KQovS1sxMSBdCj4+CmVuZG9iagoKMzk4IDAgb2JqCjw8
L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIu
NQo+PgplbmRvYmoKCjEzOSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQg
MCBSCi9QZyAxMTQgMCBSCi9BIDM5OCAwIFIKL0tbMTQwIDAgUiBdCj4+CmVuZG9iagoKMTQyIDAg
b2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE0MSAwIFIKL1BnIDExNCAwIFIKL0xh
bmcoenh4KQovS1sxMiBdCj4+CmVuZG9iagoKMzk5IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1l
bnQvQmxvY2sKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjE0MSAw
IG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxMTQgMCBSCi9B
IDM5OSAwIFIKL0tbMTQyIDAgUiBdCj4+CmVuZG9iagoKMTQ0IDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9TcGFuCi9QIDE0MyAwIFIKL1BnIDExNCAwIFIKL0xhbmcoenh4KQovS1sxMyBdCj4+
CmVuZG9iagoKNDAwIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1N0YXJ0SW5k
ZW50IDIuNQovRW5kSW5kZW50IDIuNQo+PgplbmRvYmoKCjE0MyAwIG9iago8PC9UeXBlL1N0cnVj
dEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9QZyAxMTQgMCBSCi9BIDQwMCAwIFIKL0tbMTQ0IDAg
UiBdCj4+CmVuZG9iagoKMTQ2IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE0
NSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoenh4KQovS1sxNCBdCj4+CmVuZG9iagoKNDAxIDAgb2Jq
Cjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQWZ0ZXIgMi41Ci9TdGFydEluZGVu
dCAyLjUKL0VuZEluZGVudCAyLjUKPj4KZW5kb2JqCgoxNDUgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RF
bGVtCi9TL0NvZGljZQovUCA0IDAgUgovUGcgMTE0IDAgUgovQSA0MDEgMCBSCi9LWzE0NiAwIFIg
XQo+PgplbmRvYmoKCjE0OCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxNDcg
MCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1sxNSBdCj4+CmVuZG9iagoKMTQ5IDAgb2Jq
Cjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2RpY2UjMjBpbmxpbmUKL1AgMTQ3IDAgUgovUGcgMTE0
IDAgUgovTGFuZyhlbi1VUykKL0tbMTYgXQo+PgplbmRvYmoKCjE1MCAwIG9iago8PC9UeXBlL1N0
cnVjdEVsZW0KL1MvU3BhbgovUCAxNDcgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1sx
NyBdCj4+CmVuZG9iagoKMTUxIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE0
NyAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzE4IF0KPj4KZW5kb2JqCgo0MDIgMCBv
YmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgMTQuMgo+PgplbmRv
YmoKCjE0NyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3RhbmRhcmQKL1AgNCAwIFIKL1Bn
IDExNCAwIFIKL0EgNDAyIDAgUgovS1sxNDggMCBSIDE0OSAwIFIgMTUwIDAgUiAxNTEgMCBSIF0K
Pj4KZW5kb2JqCgoxNTMgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTUyIDAg
UgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbMjAgXQo+PgplbmRvYmoKCjQwMyAwIG9iago8
PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9yZSAyMAo+PgplbmRvYmoKCjE1
MiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvSDIKL1AgNCAwIFIKL1BnIDExNCAwIFIKL0Eg
NDAzIDAgUgovS1sxOSAxNTMgMCBSIF0KPj4KZW5kb2JqCgoxNTUgMCBvYmoKPDwvVHlwZS9TdHJ1
Y3RFbGVtCi9TL1NwYW4KL1AgMTU0IDAgUgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbMjEg
XQo+PgplbmRvYmoKCjE1NiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxNTQg
MCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1syMiBdCj4+CmVuZG9iagoKMTU3IDAgb2Jq
Cjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE1NCAwIFIKL1BnIDExNCAwIFIKL0xhbmco
ZW4tVVMpCi9LWzIzIF0KPj4KZW5kb2JqCgoxNTggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9T
L1NwYW4KL1AgMTU0IDAgUgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbMjQgXQo+PgplbmRv
YmoKCjQwNCAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCj4+CmVuZG9iagoKMTU0
IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UZXh0IzIwYm9keQovUCA0IDAgUgovUGcgMTE0
IDAgUgovQSA0MDQgMCBSCi9LWzE1NSAwIFIgMTU2IDAgUiAxNTcgMCBSIDE1OCAwIFIgXQo+Pgpl
bmRvYmoKCjE2MCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxNTkgMCBSCi9Q
ZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1syNSBdCj4+CmVuZG9iagoKMTYxIDAgb2JqCjw8L1R5
cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE1OSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMp
Ci9LWzI2IF0KPj4KZW5kb2JqCgo0MDUgMCBvYmoKPDwvVHlwZS9PQkpSL09iaiAyODQgMCBSPj4K
ZW5kb2JqCgo0MDYgMCBvYmoKPDwvTy9MYXlvdXQKL0Jhc2VsaW5lU2hpZnQgOC4zCj4+CmVuZG9i
agoKMTYyIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9MaW5rCi9QIDE1OSAwIFIKL1BnIDEx
NCAwIFIKL0EgNDA2IDAgUgovTGFuZyhlbi1VUykKL0tbMjcgNDA1IDAgUiBdCj4+CmVuZG9iagoK
MTYzIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE1OSAwIFIKL1BnIDExNCAw
IFIKL0xhbmcoZW4tVVMpCi9LWzI4IF0KPj4KZW5kb2JqCgoxNjQgMCBvYmoKPDwvVHlwZS9TdHJ1
Y3RFbGVtCi9TL1NwYW4KL1AgMTU5IDAgUgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbMzAg
XQo+PgplbmRvYmoKCjE2NSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlIzIwaW5s
aW5lCi9QIDE1OSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzMxIF0KPj4KZW5kb2Jq
CgoxNjYgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTU5IDAgUgovUGcgMTE0
IDAgUgovTGFuZyhlbi1VUykKL0tbMzIgXQo+PgplbmRvYmoKCjE2NyAwIG9iago8PC9UeXBlL1N0
cnVjdEVsZW0KL1MvU3BhbgovUCAxNTkgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1sz
MyBdCj4+CmVuZG9iagoKMTY4IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9EZWZhdWx0IzIw
UGFyYWdyYXBoIzIwRm9udAovUCAxNTkgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1sz
NCBdCj4+CmVuZG9iagoKMTY5IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9EZWZhdWx0IzIw
UGFyYWdyYXBoIzIwRm9udAovUCAxNTkgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1sz
NiBdCj4+CmVuZG9iagoKMTcwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE1
OSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzM3IF0KPj4KZW5kb2JqCgo0MDcgMCBv
YmoKPDwvVHlwZS9PQkpSL09iaiAyODUgMCBSPj4KZW5kb2JqCgo0MDggMCBvYmoKPDwvTy9MYXlv
dXQKL0Jhc2VsaW5lU2hpZnQgOC4zCj4+CmVuZG9iagoKMTcxIDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9MaW5rCi9QIDE1OSAwIFIKL1BnIDExNCAwIFIKL0EgNDA4IDAgUgovTGFuZyhlbi1V
UykKL0tbMzggNDA3IDAgUiBdCj4+CmVuZG9iagoKMTcyIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9TcGFuCi9QIDE1OSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzM5IF0KPj4K
ZW5kb2JqCgoxNzMgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTU5IDAgUgov
UGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbNDAgXQo+PgplbmRvYmoKCjE3NCAwIG9iago8PC9U
eXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxNTkgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVT
KQovS1s0MiBdCj4+CmVuZG9iagoKNDA5IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxv
Y2sKL1NwYWNlQmVmb3JlIDE5Cj4+CmVuZG9iagoKMTU5IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxl
bQovUy9UZXh0IzIwYm9keQovUCA0IDAgUgovUGcgMTE0IDAgUgovQSA0MDkgMCBSCi9LWzE2MCAw
IFIgMTYxIDAgUiAxNjIgMCBSIDE2MyAwIFIgMjkgMTY0IDAgUiAxNjUgMCBSIDE2NiAwIFIgMTY3
IDAgUiAxNjggMCBSIDM1IDE2OSAwIFIgMTcwIDAgUiAxNzEgMCBSIDE3MiAwIFIgMTczIDAgUgo0
MSAxNzQgMCBSIF0KPj4KZW5kb2JqCgoxNzYgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1Nw
YW4KL1AgMTc1IDAgUgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbNDQgXQo+PgplbmRvYmoK
CjQxMCAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9yZSA0Mwo+
PgplbmRvYmoKCjE3NSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvSDEKL1AgNCAwIFIKL1Bn
IDExNCAwIFIKL0EgNDEwIDAgUgovS1s0MyAxNzYgMCBSIF0KPj4KZW5kb2JqCgoxNzggMCBvYmoK
PDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTc3IDAgUgovUGcgMTE0IDAgUgovTGFuZyhl
bi1VUykKL0tbNDUgXQo+PgplbmRvYmoKCjE3OSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1Mv
U3BhbgovUCAxNzcgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1s0NiBdCj4+CmVuZG9i
agoKMTgwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE3NyAwIFIKL1BnIDEx
NCAwIFIKL0xhbmcoZW4tVVMpCi9LWzQ3IF0KPj4KZW5kb2JqCgo0MTEgMCBvYmoKPDwvTy9MYXlv
dXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgMTIKPj4KZW5kb2JqCgoxNzcgMCBvYmoK
PDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBib2R5Ci9QIDQgMCBSCi9QZyAxMTQgMCBSCi9B
IDQxMSAwIFIKL0tbMTc4IDAgUiAxNzkgMCBSIDE4MCAwIFIgXQo+PgplbmRvYmoKCjE4MiAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxODEgMCBSCi9QZyAxMTQgMCBSCi9MYW5n
KGVuLVVTKQovS1s0OCBdCj4+CmVuZG9iagoKMTgzIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQov
Uy9TcGFuCi9QIDE4MSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzQ5IF0KPj4KZW5k
b2JqCgoxODQgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0NvZGljZSMyMGlubGluZQovUCAx
ODEgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1s1MCBdCj4+CmVuZG9iagoKMTg1IDAg
b2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE4MSAwIFIKL1BnIDExNCAwIFIKL0xh
bmcoZW4tVVMpCi9LWzUxIF0KPj4KZW5kb2JqCgoxODYgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVt
Ci9TL1NwYW4KL1AgMTgxIDAgUgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbNTIgXQo+Pgpl
bmRvYmoKCjE4NyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlIzIwaW5saW5lCi9Q
IDE4MSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzUzIF0KPj4KZW5kb2JqCgoxODgg
MCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTgxIDAgUgovUGcgMTE0IDAgUgov
TGFuZyhlbi1VUykKL0tbNTQgXQo+PgplbmRvYmoKCjE4OSAwIG9iago8PC9UeXBlL1N0cnVjdEVs
ZW0KL1MvU3BhbgovUCAxODEgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1s1NSBdCj4+
CmVuZG9iagoKMTkwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE4MSAwIFIK
L1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzU2IF0KPj4KZW5kb2JqCgo0MTIgMCBvYmoKPDwv
Ty9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgMTkKPj4KZW5kb2JqCgoxODEg
MCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBib2R5Ci9QIDQgMCBSCi9QZyAxMTQg
MCBSCi9BIDQxMiAwIFIKL0tbMTgyIDAgUiAxODMgMCBSIDE4NCAwIFIgMTg1IDAgUiAxODYgMCBS
IDE4NyAwIFIgMTg4IDAgUiAxODkgMCBSIDE5MCAwIFIgXQo+PgplbmRvYmoKCjE5MiAwIG9iago8
PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxOTEgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVu
LVVTKQovS1s1OCBdCj4+CmVuZG9iagoKNDEzIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQv
QmxvY2sKL1NwYWNlQmVmb3JlIDQzCj4+CmVuZG9iagoKMTkxIDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9IMQovUCA0IDAgUgovUGcgMTE0IDAgUgovQSA0MTMgMCBSCi9LWzU3IDE5MiAwIFIg
XQo+PgplbmRvYmoKCjE5NCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAxOTMg
MCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1s1OSBdCj4+CmVuZG9iagoKMTk1IDAgb2Jq
Cjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE5MyAwIFIKL1BnIDExNCAwIFIKL0xhbmco
ZW4tVVMpCi9LWzYwIF0KPj4KZW5kb2JqCgoxOTYgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9T
L1NwYW4KL1AgMTkzIDAgUgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbNjEgXQo+PgplbmRv
YmoKCjQxNCAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9yZSAx
Mgo+PgplbmRvYmoKCjE5MyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGV4dCMyMGJvZHkK
L1AgNCAwIFIKL1BnIDExNCAwIFIKL0EgNDE0IDAgUgovS1sxOTQgMCBSIDE5NSAwIFIgMTk2IDAg
UiBdCj4+CmVuZG9iagoKMjAwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDE5
OSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzYzIF0KPj4KZW5kb2JqCgoyMDEgMCBv
YmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMTk5IDAgUgovUGcgMTE0IDAgUgovTGFu
Zyhlbi1VUykKL0tbNjQgXQo+PgplbmRvYmoKCjIwMiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0K
L1MvQ29kaWNlIzIwaW5saW5lCi9QIDE5OSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9L
WzY1IF0KPj4KZW5kb2JqCgoyMDMgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1Ag
MTk5IDAgUgovUGcgMTE0IDAgUgovTGFuZyhlbi1VUykKL0tbNjYgXQo+PgplbmRvYmoKCjQxNSAw
IG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9UZXh0SW5kZW50IC0yMi43Cj4+CmVu
ZG9iagoKMTk5IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Gb290bm90ZQovUCAxOTggMCBS
Ci9QZyAxMTQgMCBSCi9BIDQxNSAwIFIKL0tbNjIgMjAwIDAgUiAyMDEgMCBSIDIwMiAwIFIgMjAz
IDAgUiBdCj4+CmVuZG9iagoKMTk4IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Ob3RlCi9Q
IDE5NyAwIFIKL1BnIDExNCAwIFIKL0tbMTk5IDAgUiBdCj4+CmVuZG9iagoKMjA2IDAgb2JqCjw8
L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDIwNSAwIFIKL1BnIDExNCAwIFIKL0xhbmcoZW4t
VVMpCi9LWzY4IF0KPj4KZW5kb2JqCgoyMDcgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0Nv
ZGljZSMyMGlubGluZQovUCAyMDUgMCBSCi9QZyAxMTQgMCBSCi9MYW5nKGVuLVVTKQovS1s2OSBd
Cj4+CmVuZG9iagoKMjA4IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDIwNSAw
IFIKL1BnIDExNCAwIFIKL0xhbmcoZW4tVVMpCi9LWzcwIF0KPj4KZW5kb2JqCgoyMDkgMCBvYmoK
PDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjA1IDAgUgovUGcgMTE0IDAgUgovTGFuZyhl
bi1VUykKL0tbNzEgXQo+PgplbmRvYmoKCjQxNiAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50
L0Jsb2NrCi9UZXh0SW5kZW50IC0yMi43Cj4+CmVuZG9iagoKMjA1IDAgb2JqCjw8L1R5cGUvU3Ry
dWN0RWxlbQovUy9Gb290bm90ZQovUCAyMDQgMCBSCi9QZyAxMTQgMCBSCi9BIDQxNiAwIFIKL0tb
NjcgMjA2IDAgUiAyMDcgMCBSIDIwOCAwIFIgMjA5IDAgUiBdCj4+CmVuZG9iagoKMjA0IDAgb2Jq
Cjw8L1R5cGUvU3RydWN0RWxlbQovUy9Ob3RlCi9QIDE5NyAwIFIKL1BnIDExNCAwIFIKL0tbMjA1
IDAgUiBdCj4+CmVuZG9iagoKMTk3IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9EaXYKL1Ag
NCAwIFIKL1BnIDExNCAwIFIKL0tbMTk4IDAgUiAyMDQgMCBSIF0KPj4KZW5kb2JqCgoyMTQgMCBv
YmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjEzIDAgUgovUGcgMjEwIDAgUgovTGFu
Zyh6eHgpCi9LWzAgXQo+PgplbmRvYmoKCjQxNyAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50
L0Jsb2NrCi9TcGFjZUJlZm9yZSAyLjUKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+
PgplbmRvYmoKCjIxMyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBS
Ci9QZyAyMTAgMCBSCi9BIDQxNyAwIFIKL0tbMjE0IDAgUiBdCj4+CmVuZG9iagoKMjE2IDAgb2Jq
Cjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDIxNSAwIFIKL1BnIDIxMCAwIFIKL0xhbmco
enh4KQovS1sxIF0KPj4KZW5kb2JqCgo0MTggMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9C
bG9jawovU3BhY2VBZnRlciAyLjUKL1N0YXJ0SW5kZW50IDIuNQovRW5kSW5kZW50IDIuNQo+Pgpl
bmRvYmoKCjIxNSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29kaWNlCi9QIDQgMCBSCi9Q
ZyAyMTAgMCBSCi9BIDQxOCAwIFIKL0tbMjE2IDAgUiBdCj4+CmVuZG9iagoKMjE4IDAgb2JqCjw8
L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDIxNyAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4t
VVMpCi9LWzIgXQo+PgplbmRvYmoKCjIxOSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3Bh
bgovUCAyMTcgMCBSCi9QZyAyMTAgMCBSCi9MYW5nKGVuLVVTKQovS1szIF0KPj4KZW5kb2JqCgo0
MTkgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgMTQuMgo+
PgplbmRvYmoKCjIxNyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGV4dCMyMGJvZHkKL1Ag
NCAwIFIKL1BnIDIxMCAwIFIKL0EgNDE5IDAgUgovS1syMTggMCBSIDIxOSAwIFIgXQo+PgplbmRv
YmoKCjIyMSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAyMjAgMCBSCi9QZyAy
MTAgMCBSCi9MYW5nKGVuLVVTKQovS1s0IF0KPj4KZW5kb2JqCgoyMjIgMCBvYmoKPDwvVHlwZS9T
dHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjIwIDAgUgovUGcgMjEwIDAgUgovTGFuZyhlbi1VUykKL0tb
NSBdCj4+CmVuZG9iagoKMjIzIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDIy
MCAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMpCi9LWzYgXQo+PgplbmRvYmoKCjQyMCAwIG9i
ago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9yZSAxOQo+PgplbmRvYmoK
CjIyMCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGV4dCMyMGJvZHkKL1AgNCAwIFIKL1Bn
IDIxMCAwIFIKL0EgNDIwIDAgUgovS1syMjEgMCBSIDIyMiAwIFIgMjIzIDAgUiBdCj4+CmVuZG9i
agoKMjI1IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDIyNCAwIFIKL1BnIDIx
MCAwIFIKL0xhbmcoenh4KQovS1s3IF0KPj4KZW5kb2JqCgo0MjEgMCBvYmoKPDwvTy9MYXlvdXQK
L1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgMzIuOAovU3RhcnRJbmRlbnQgMi41Ci9FbmRJ
bmRlbnQgMi41Cj4+CmVuZG9iagoKMjI0IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2Rp
Y2UKL1AgNCAwIFIKL1BnIDIxMCAwIFIKL0EgNDIxIDAgUgovS1syMjUgMCBSIF0KPj4KZW5kb2Jq
CgoyMjcgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjI2IDAgUgovUGcgMjEw
IDAgUgovTGFuZyh6eHgpCi9LWzggXQo+PgplbmRvYmoKCjQyMiAwIG9iago8PC9PL0xheW91dAov
UGxhY2VtZW50L0Jsb2NrCi9TcGFjZUFmdGVyIDIuNQovU3RhcnRJbmRlbnQgMi41Ci9FbmRJbmRl
bnQgMi41Cj4+CmVuZG9iagoKMjI2IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9Db2RpY2UK
L1AgNCAwIFIKL1BnIDIxMCAwIFIKL0EgNDIyIDAgUgovS1syMjcgMCBSIF0KPj4KZW5kb2JqCgoy
MjkgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjI4IDAgUgovUGcgMjEwIDAg
UgovTGFuZyhlbi1VUykKL0tbOSBdCj4+CmVuZG9iagoKMjMwIDAgb2JqCjw8L1R5cGUvU3RydWN0
RWxlbQovUy9Db2RpY2UjMjBpbmxpbmUKL1AgMjI4IDAgUgovUGcgMjEwIDAgUgovTGFuZyhlbi1V
UykKL0tbMTAgXQo+PgplbmRvYmoKCjIzMSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3Bh
bgovUCAyMjggMCBSCi9QZyAyMTAgMCBSCi9MYW5nKGVuLVVTKQovS1sxMSBdCj4+CmVuZG9iagoK
NDIzIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQmVmb3JlIDE0LjIK
Pj4KZW5kb2JqCgoyMjggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBib2R5Ci9Q
IDQgMCBSCi9QZyAyMTAgMCBSCi9BIDQyMyAwIFIKL0tbMjI5IDAgUiAyMzAgMCBSIDIzMSAwIFIg
XQo+PgplbmRvYmoKCjIzNiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAyMzUg
MCBSCi9QZyAyMTAgMCBSCi9MYW5nKGVuLVVTKQovS1sxMyBdCj4+CmVuZG9iagoKNDI0IDAgb2Jq
Cjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQmVmb3JlIDE5LjIKL1N0YXJ0SW5k
ZW50IDM2Cj4+CmVuZG9iagoKMjM1IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UZXh0IzIw
Ym9keQovUCAyMzQgMCBSCi9QZyAyMTAgMCBSCi9BIDQyNCAwIFIKL0tbMTIgMjM2IDAgUiBdCj4+
CmVuZG9iagoKMjM0IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9MQm9keQovUCAyMzMgMCBS
Ci9QZyAyMTAgMCBSCi9LWzIzNSAwIFIgXQo+PgplbmRvYmoKCjIzMyAwIG9iago8PC9UeXBlL1N0
cnVjdEVsZW0KL1MvTEkKL1AgMjMyIDAgUgovUGcgMjEwIDAgUgovS1syMzQgMCBSIF0KPj4KZW5k
b2JqCgoyNDAgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjM5IDAgUgovUGcg
MjEwIDAgUgovTGFuZyhlbi1VUykKL0tbMTUgXQo+PgplbmRvYmoKCjQyNSAwIG9iago8PC9PL0xh
eW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFjZUJlZm9yZSAxOQovU3RhcnRJbmRlbnQgMzYKPj4K
ZW5kb2JqCgoyMzkgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBib2R5Ci9QIDIz
OCAwIFIKL1BnIDIxMCAwIFIKL0EgNDI1IDAgUgovS1sxNCAyNDAgMCBSIF0KPj4KZW5kb2JqCgoy
MzggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0xCb2R5Ci9QIDIzNyAwIFIKL1BnIDIxMCAw
IFIKL0tbMjM5IDAgUiBdCj4+CmVuZG9iagoKMjM3IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQov
Uy9MSQovUCAyMzIgMCBSCi9QZyAyMTAgMCBSCi9LWzIzOCAwIFIgXQo+PgplbmRvYmoKCjI0NCAw
IG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAyNDMgMCBSCi9QZyAyMTAgMCBSCi9M
YW5nKGVuLVVTKQovS1sxNyBdCj4+CmVuZG9iagoKNDI2IDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFj
ZW1lbnQvQmxvY2sKL1NwYWNlQmVmb3JlIDE5Ci9TdGFydEluZGVudCAzNgo+PgplbmRvYmoKCjI0
MyAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGV4dCMyMGJvZHkKL1AgMjQyIDAgUgovUGcg
MjEwIDAgUgovQSA0MjYgMCBSCi9LWzE2IDI0NCAwIFIgXQo+PgplbmRvYmoKCjI0MiAwIG9iago8
PC9UeXBlL1N0cnVjdEVsZW0KL1MvTEJvZHkKL1AgMjQxIDAgUgovUGcgMjEwIDAgUgovS1syNDMg
MCBSIF0KPj4KZW5kb2JqCgoyNDEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0xJCi9QIDIz
MiAwIFIKL1BnIDIxMCAwIFIKL0tbMjQyIDAgUiBdCj4+CmVuZG9iagoKMjQ4IDAgb2JqCjw8L1R5
cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDI0NyAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMp
Ci9LWzE5IF0KPj4KZW5kb2JqCgo0MjcgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9j
awovU3BhY2VCZWZvcmUgMTkKL1N0YXJ0SW5kZW50IDM2Cj4+CmVuZG9iagoKMjQ3IDAgb2JqCjw8
L1R5cGUvU3RydWN0RWxlbQovUy9UZXh0IzIwYm9keQovUCAyNDYgMCBSCi9QZyAyMTAgMCBSCi9B
IDQyNyAwIFIKL0tbMTggMjQ4IDAgUiBdCj4+CmVuZG9iagoKMjQ2IDAgb2JqCjw8L1R5cGUvU3Ry
dWN0RWxlbQovUy9MQm9keQovUCAyNDUgMCBSCi9QZyAyMTAgMCBSCi9LWzI0NyAwIFIgXQo+Pgpl
bmRvYmoKCjI0NSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvTEkKL1AgMjMyIDAgUgovUGcg
MjEwIDAgUgovS1syNDYgMCBSIF0KPj4KZW5kb2JqCgoyMzIgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RF
bGVtCi9TL0wKL1AgNCAwIFIKL1BnIDIxMCAwIFIKL0tbMjMzIDAgUiAyMzcgMCBSIDI0MSAwIFIg
MjQ1IDAgUiBdCj4+CmVuZG9iagoKMjUwIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFu
Ci9QIDI0OSAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMpCi9LWzIxIF0KPj4KZW5kb2JqCgo0
MjggMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgNDMKPj4K
ZW5kb2JqCgoyNDkgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0gxCi9QIDQgMCBSCi9QZyAy
MTAgMCBSCi9BIDQyOCAwIFIKL0tbMjAgMjUwIDAgUiBdCj4+CmVuZG9iagoKMjUyIDAgb2JqCjw8
L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDI1MSAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4t
VVMpCi9LWzIyIF0KPj4KZW5kb2JqCgo0MjkgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9C
bG9jawovU3BhY2VCZWZvcmUgMTIKPj4KZW5kb2JqCgoyNTEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RF
bGVtCi9TL1RleHQjMjBib2R5Ci9QIDQgMCBSCi9QZyAyMTAgMCBSCi9BIDQyOSAwIFIKL0tbMjUy
IDAgUiBdCj4+CmVuZG9iagoKMjU0IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9Q
IDI1MyAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMpCi9LWzI0IF0KPj4KZW5kb2JqCgo0MzAg
MCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgNDMKPj4KZW5k
b2JqCgoyNTMgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0gxCi9QIDQgMCBSCi9QZyAyMTAg
MCBSCi9BIDQzMCAwIFIKL0tbMjMgMjU0IDAgUiBdCj4+CmVuZG9iagoKMjU2IDAgb2JqCjw8L1R5
cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDI1NSAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMp
Ci9LWzI2IF0KPj4KZW5kb2JqCgo0MzEgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9j
awovU3BhY2VCZWZvcmUgMzIKPj4KZW5kb2JqCgoyNTUgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVt
Ci9TL0gyCi9QIDQgMCBSCi9QZyAyMTAgMCBSCi9BIDQzMSAwIFIKL0tbMjUgMjU2IDAgUiBdCj4+
CmVuZG9iagoKMjU4IDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDI1NyAwIFIK
L1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMpCi9LWzI3IF0KPj4KZW5kb2JqCgoyNTkgMCBvYmoKPDwv
VHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjU3IDAgUgovUGcgMjEwIDAgUgovTGFuZyhlbi1V
UykKL0tbMjggXQo+PgplbmRvYmoKCjI2MCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvQ29k
aWNlIzIwaW5saW5lCi9QIDI1NyAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMpCi9LWzI5IF0K
Pj4KZW5kb2JqCgoyNjEgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjU3IDAg
UgovUGcgMjEwIDAgUgovTGFuZyhlbi1VUykKL0tbMzAgXQo+PgplbmRvYmoKCjI2MiAwIG9iago8
PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAyNTcgMCBSCi9QZyAyMTAgMCBSCi9MYW5nKGVu
LVVTKQovS1szMiBdCj4+CmVuZG9iagoKNDMyIDAgb2JqCjw8L08vTGF5b3V0Ci9QbGFjZW1lbnQv
QmxvY2sKPj4KZW5kb2JqCgoyNTcgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL1RleHQjMjBi
b2R5Ci9QIDQgMCBSCi9QZyAyMTAgMCBSCi9BIDQzMiAwIFIKL0tbMjU4IDAgUiAyNTkgMCBSIDI2
MCAwIFIgMjYxIDAgUiAzMSAyNjIgMCBSIF0KPj4KZW5kb2JqCgoyNjcgMCBvYmoKPDwvVHlwZS9T
dHJ1Y3RFbGVtCi9TL1NwYW4KL1AgMjY2IDAgUgovUGcgMjEwIDAgUgovTGFuZyhlbi1VUykKL0tb
MzQgXQo+PgplbmRvYmoKCjQzMyAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9T
cGFjZUJlZm9yZSAxOQo+PgplbmRvYmoKCjI2NiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1Mv
VGV4dCMyMGJvZHkKL1AgMjY1IDAgUgovUGcgMjEwIDAgUgovQSA0MzMgMCBSCi9LWzMzIDI2NyAw
IFIgXQo+PgplbmRvYmoKCjI2NSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvTEJvZHkKL1Ag
MjY0IDAgUgovUGcgMjEwIDAgUgovS1syNjYgMCBSIF0KPj4KZW5kb2JqCgoyNjQgMCBvYmoKPDwv
VHlwZS9TdHJ1Y3RFbGVtCi9TL0xJCi9QIDI2MyAwIFIKL1BnIDIxMCAwIFIKL0tbMjY1IDAgUiBd
Cj4+CmVuZG9iagoKMjcxIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDI3MCAw
IFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMpCi9LWzM2IF0KPj4KZW5kb2JqCgo0MzQgMCBvYmoK
PDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgMTkuNAo+PgplbmRvYmoK
CjI3MCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGV4dCMyMGJvZHkKL1AgMjY5IDAgUgov
UGcgMjEwIDAgUgovQSA0MzQgMCBSCi9LWzM1IDI3MSAwIFIgXQo+PgplbmRvYmoKCjI2OSAwIG9i
ago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvTEJvZHkKL1AgMjY4IDAgUgovUGcgMjEwIDAgUgovS1sy
NzAgMCBSIF0KPj4KZW5kb2JqCgoyNjggMCBvYmoKPDwvVHlwZS9TdHJ1Y3RFbGVtCi9TL0xJCi9Q
IDI2MyAwIFIKL1BnIDIxMCAwIFIKL0tbMjY5IDAgUiBdCj4+CmVuZG9iagoKMjYzIDAgb2JqCjw8
L1R5cGUvU3RydWN0RWxlbQovUy9MCi9QIDQgMCBSCi9QZyAyMTAgMCBSCi9LWzI2NCAwIFIgMjY4
IDAgUiBdCj4+CmVuZG9iagoKMjczIDAgb2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9Q
IDI3MiAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4tVVMpCi9LWzM4IF0KPj4KZW5kb2JqCgo0MzUg
MCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9CbG9jawovU3BhY2VCZWZvcmUgNDMuNAo+Pgpl
bmRvYmoKCjI3MiAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvSDEKL1AgNCAwIFIKL1BnIDIx
MCAwIFIKL0EgNDM1IDAgUgovS1szNyAyNzMgMCBSIF0KPj4KZW5kb2JqCgo0MzYgMCBvYmoKPDwv
VHlwZS9PQkpSL09iaiAyODIgMCBSPj4KZW5kb2JqCgo0MzcgMCBvYmoKPDwvTy9MYXlvdXQKL1Rl
eHREZWNvcmF0aW9uVHlwZS9VbmRlcmxpbmUKPj4KZW5kb2JqCgoyNzUgMCBvYmoKPDwvVHlwZS9T
dHJ1Y3RFbGVtCi9TL0xpbmsKL1AgMjc0IDAgUgovUGcgMjEwIDAgUgovQSA0MzcgMCBSCi9MYW5n
KGVuLVVTKQovS1szOSA0MzYgMCBSIF0KPj4KZW5kb2JqCgoyNzYgMCBvYmoKPDwvVHlwZS9TdHJ1
Y3RFbGVtCi9TL1NwYW4KL1AgMjc0IDAgUgovUGcgMjEwIDAgUgovTGFuZyhlbi1VUykKL0tbNDAg
XQo+PgplbmRvYmoKCjQzOCAwIG9iago8PC9PL0xheW91dAovUGxhY2VtZW50L0Jsb2NrCi9TcGFj
ZUJlZm9yZSAxMgo+PgplbmRvYmoKCjI3NCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvVGV4
dCMyMGJvZHkKL1AgNCAwIFIKL1BnIDIxMCAwIFIKL0EgNDM4IDAgUgovS1syNzUgMCBSIDI3NiAw
IFIgXQo+PgplbmRvYmoKCjQzOSAwIG9iago8PC9UeXBlL09CSlIvT2JqIDI4MyAwIFI+PgplbmRv
YmoKCjQ0MCAwIG9iago8PC9PL0xheW91dAovVGV4dERlY29yYXRpb25UeXBlL1VuZGVybGluZQo+
PgplbmRvYmoKCjI3OCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvTGluawovUCAyNzcgMCBS
Ci9QZyAyMTAgMCBSCi9BIDQ0MCAwIFIKL0xhbmcoZW4tVVMpCi9LWzQxIDQzOSAwIFIgXQo+Pgpl
bmRvYmoKCjI3OSAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvU3BhbgovUCAyNzcgMCBSCi9Q
ZyAyMTAgMCBSCi9MYW5nKGVuLVVTKQovS1s0MiBdCj4+CmVuZG9iagoKNDQxIDAgb2JqCjw8L08v
TGF5b3V0Ci9QbGFjZW1lbnQvQmxvY2sKL1NwYWNlQmVmb3JlIDE5Cj4+CmVuZG9iagoKMjc3IDAg
b2JqCjw8L1R5cGUvU3RydWN0RWxlbQovUy9UZXh0IzIwYm9keQovUCA0IDAgUgovUGcgMjEwIDAg
UgovQSA0NDEgMCBSCi9LWzI3OCAwIFIgMjc5IDAgUiBdCj4+CmVuZG9iagoKMjgxIDAgb2JqCjw8
L1R5cGUvU3RydWN0RWxlbQovUy9TcGFuCi9QIDI4MCAwIFIKL1BnIDIxMCAwIFIKL0xhbmcoZW4t
VVMpCi9LWzQ0IF0KPj4KZW5kb2JqCgo0NDIgMCBvYmoKPDwvTy9MYXlvdXQKL1BsYWNlbWVudC9C
bG9jawovU3BhY2VCZWZvcmUgNDMKPj4KZW5kb2JqCgoyODAgMCBvYmoKPDwvVHlwZS9TdHJ1Y3RF
bGVtCi9TL0gxCi9QIDQgMCBSCi9QZyAyMTAgMCBSCi9BIDQ0MiAwIFIKL0tbNDMgMjgxIDAgUiBd
Cj4+CmVuZG9iagoKNCAwIG9iago8PC9UeXBlL1N0cnVjdEVsZW0KL1MvRG9jdW1lbnQKL1AgMzI2
IDAgUgovUGcgMSAwIFIKL0tbNSAwIFIgNiAwIFIgNDggMCBSIDUwIDAgUiA1NSAwIFIgNTcgMCBS
IDYwIDAgUiA2MiAwIFIgNjUgMCBSIDY3IDAgUiA2OSAwIFIgNzEgMCBSIDczIDAgUiA3NSAwIFIg
ODEgMCBSIDgzIDAgUgo4NSAwIFIgODcgMCBSIDg5IDAgUiA5MSAwIFIgOTMgMCBSIDk1IDAgUiA5
NyAwIFIgOTkgMCBSIDEwMSAwIFIgMTAzIDAgUiAxMDUgMCBSIDEwNyAwIFIgMTA5IDAgUiAxMTEg
MCBSIDExNyAwIFIgMTE5IDAgUgoxMjEgMCBSIDEyMyAwIFIgMTI1IDAgUiAxMjcgMCBSIDEyOSAw
IFIgMTMxIDAgUiAxMzMgMCBSIDEzNSAwIFIgMTM3IDAgUiAxMzkgMCBSIDE0MSAwIFIgMTQzIDAg
UiAxNDUgMCBSIDE0NyAwIFIgMTUyIDAgUiAxNTQgMCBSCjE1OSAwIFIgMTc1IDAgUiAxNzcgMCBS
IDE4MSAwIFIgMTkxIDAgUiAxOTMgMCBSIDE5NyAwIFIgMjEzIDAgUiAyMTUgMCBSIDIxNyAwIFIg
MjIwIDAgUiAyMjQgMCBSIDIyNiAwIFIgMjI4IDAgUiAyMzIgMCBSIDI0OSAwIFIKMjUxIDAgUiAy
NTMgMCBSIDI1NSAwIFIgMjU3IDAgUiAyNjMgMCBSIDI3MiAwIFIgMjc0IDAgUiAyNzcgMCBSIDI4
MCAwIFIgXQo+PgplbmRvYmoKCjMyNiAwIG9iago8PC9UeXBlL1N0cnVjdFRyZWVSb290Ci9QYXJl
bnRUcmVlIDQ0MyAwIFIKL1JvbGVNYXA8PC9MQm9keS9MQm9keQovTEkvTEkKL0wvTAovTm90ZS9O
b3RlCi9EaXYvRGl2Ci9UZXh0IzIwYm9keS9QCi9IMS9IMQovQ29kaWNlIzIwaW5saW5lL1NwYW4K
L1RSL1RSCi9IMi9IMgovVEQvVEQKL0Zvb3Rub3RlL1AKL1RhYmxlIzIwQ29udGVudHMvUAovQ29k
aWNlL1AKL1RhYmxlL1RhYmxlCi9EZWZhdWx0IzIwUGFyYWdyYXBoIzIwRm9udC9TcGFuCi9MaW5r
L0xpbmsKL1NwYW4vU3BhbgovU3RhbmRhcmQvUAovRG9jdW1lbnQvRG9jdW1lbnQKPj4KL0tbNCAw
IFIgXQo+PgplbmRvYmoKCjQ0MyAwIG9iago8PC9OdW1zWwowIFsgMTAgMCBSIDEzIDAgUiAxNyAw
IFIgMjAgMCBSIDI0IDAgUiAyNyAwIFIgMzEgMCBSIDM0IDAgUiAzOCAwIFIgNDEgMCBSCjQ1IDAg
UiA0NyAwIFIgNDggMCBSIDQ5IDAgUiA1MSAwIFIgNTIgMCBSIDUzIDAgUiA1NCAwIFIgNTUgMCBS
IDU2IDAgUgo1OCAwIFIgNTkgMCBSIDYwIDAgUiA2MSAwIFIgNjMgMCBSIDY0IDAgUiA2NiAwIFIg
NjggMCBSIDcwIDAgUiA3MiAwIFIKNzQgMCBSIDc2IDAgUiA3NyAwIFIgNzggMCBSIDc5IDAgUiA4
MCAwIFIgODIgMCBSIDg0IDAgUiA4NiAwIFIgODggMCBSCjkwIDAgUiA5MiAwIFIgOTQgMCBSIDk2
IDAgUiA5OCAwIFIgMTAwIDAgUiAxMDIgMCBSIDEwNCAwIFIgMTA2IDAgUiAxMDggMCBSCjExMCAw
IFIgMTEyIDAgUiAxMTMgMCBSIF0KMSBbIDExOCAwIFIgMTIwIDAgUiAxMjIgMCBSIDEyNCAwIFIg
MTI2IDAgUiAxMjggMCBSIDEzMCAwIFIgMTMyIDAgUiAxMzQgMCBSIDEzNiAwIFIKMTM4IDAgUiAx
NDAgMCBSIDE0MiAwIFIgMTQ0IDAgUiAxNDYgMCBSIDE0OCAwIFIgMTQ5IDAgUiAxNTAgMCBSIDE1
MSAwIFIgMTUyIDAgUgoxNTMgMCBSIDE1NSAwIFIgMTU2IDAgUiAxNTcgMCBSIDE1OCAwIFIgMTYw
IDAgUiAxNjEgMCBSIDE2MiAwIFIgMTYzIDAgUiAxNTkgMCBSCjE2NCAwIFIgMTY1IDAgUiAxNjYg
MCBSIDE2NyAwIFIgMTY4IDAgUiAxNTkgMCBSIDE2OSAwIFIgMTcwIDAgUiAxNzEgMCBSIDE3MiAw
IFIKMTczIDAgUiAxNTkgMCBSIDE3NCAwIFIgMTc1IDAgUiAxNzYgMCBSIDE3OCAwIFIgMTc5IDAg
UiAxODAgMCBSIDE4MiAwIFIgMTgzIDAgUgoxODQgMCBSIDE4NSAwIFIgMTg2IDAgUiAxODcgMCBS
IDE4OCAwIFIgMTg5IDAgUiAxOTAgMCBSIDE5MSAwIFIgMTkyIDAgUiAxOTQgMCBSCjE5NSAwIFIg
MTk2IDAgUiAxOTkgMCBSIDIwMCAwIFIgMjAxIDAgUiAyMDIgMCBSIDIwMyAwIFIgMjA1IDAgUiAy
MDYgMCBSIDIwNyAwIFIKMjA4IDAgUiAyMDkgMCBSIF0KMiBbIDIxNCAwIFIgMjE2IDAgUiAyMTgg
MCBSIDIxOSAwIFIgMjIxIDAgUiAyMjIgMCBSIDIyMyAwIFIgMjI1IDAgUiAyMjcgMCBSIDIyOSAw
IFIKMjMwIDAgUiAyMzEgMCBSIDIzNSAwIFIgMjM2IDAgUiAyMzkgMCBSIDI0MCAwIFIgMjQzIDAg
UiAyNDQgMCBSIDI0NyAwIFIgMjQ4IDAgUgoyNDkgMCBSIDI1MCAwIFIgMjUyIDAgUiAyNTMgMCBS
IDI1NCAwIFIgMjU1IDAgUiAyNTYgMCBSIDI1OCAwIFIgMjU5IDAgUiAyNjAgMCBSCjI2MSAwIFIg
MjU3IDAgUiAyNjIgMCBSIDI2NiAwIFIgMjY3IDAgUiAyNzAgMCBSIDI3MSAwIFIgMjcyIDAgUiAy
NzMgMCBSIDI3NSAwIFIKMjc2IDAgUiAyNzggMCBSIDI3OSAwIFIgMjgwIDAgUiAyODEgMCBSIF0K
MyAxNjIgMCBSCjQgMTcxIDAgUgo1IDI3NSAwIFIKNiAyNzggMCBSCl0+PgplbmRvYmoKCjI4NiAw
IG9iago8PC9UeXBlL1BhZ2VzCi9SZXNvdXJjZXMgMzEzIDAgUgovTWVkaWFCb3hbIDAgMCA1OTUg
ODQyIF0KL0tpZHNbIDEgMCBSIDExNCAwIFIgMjEwIDAgUiBdCi9Db3VudCAzPj4KZW5kb2JqCgoy
ODIgMCBvYmoKPDwvVHlwZS9Bbm5vdC9TdWJ0eXBlL0xpbmsvQm9yZGVyWzAgMCAwXS9SZWN0WzU2
IDIzNC4xIDk4LjQgMjQ2LjhdL0E8PC9UeXBlL0FjdGlvbi9TL1VSSS9VUkkoaHR0cDovL3dnMjEu
bGluay9QMDA1Mik+PgovU3RydWN0UGFyZW50IDU+PgplbmRvYmoKCjI4MyAwIG9iago8PC9UeXBl
L0Fubm90L1N1YnR5cGUvTGluay9Cb3JkZXJbMCAwIDBdL1JlY3RbNTYgMjEyIDk4LjQgMjI0Ljdd
L0E8PC9UeXBlL0FjdGlvbi9TL1VSSS9VUkkoaHR0cDovL3dnMjEubGluay9QMDU3Nyk+PgovU3Ry
dWN0UGFyZW50IDY+PgplbmRvYmoKCjI4NCAwIG9iago8PC9UeXBlL0Fubm90L1N1YnR5cGUvTGlu
ay9Cb3JkZXJbMCAwIDBdL1JlY3RbMzI0LjUgNDI5LjMgMzI5LjcgNDQ0LjVdL0Rlc3RbMTE0IDAg
Ui9YWVogNjguMSAxMDcuNCAwXS9TdHJ1Y3RQYXJlbnQgMz4+CmVuZG9iagoKMjg1IDAgb2JqCjw8
L1R5cGUvQW5ub3QvU3VidHlwZS9MaW5rL0JvcmRlclswIDAgMF0vUmVjdFs0ODEuNSAzOTguNCA0
ODYuNyA0MTMuNl0vRGVzdFsxMTQgMCBSL1hZWiA2OC4xIDgyLjEgMF0vU3RydWN0UGFyZW50IDQ+
PgplbmRvYmoKCjQ0NCAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMjg2IDAgUgovT3BlbkFj
dGlvblsxIDAgUiAvWFlaIG51bGwgbnVsbCAwXQovT3V0bGluZXMgMzE0IDAgUgovU3RydWN0VHJl
ZVJvb3QgMzI2IDAgUgovTGFuZyhpdC1JVCkKL01hcmtJbmZvPDwvTWFya2VkIHRydWU+Pgo+Pgpl
bmRvYmoKCjQ0NSAwIG9iago8PC9BdXRob3I8RkVGRjAwNDEwMDZDMDA2MjAwNjUwMDcyMDA3NDAw
NkYwMDIwMDA0MjAwNjEwMDcyMDA2MjAwNjEwMDc0MDA2OT4KL0NyZWF0b3I8RkVGRjAwNTcwMDcy
MDA2OTAwNzQwMDY1MDA3Mj4KL1Byb2R1Y2VyPEZFRkYwMDRDMDA2OTAwNjIwMDcyMDA2NTAwNEYw
MDY2MDA2NjAwNjkwMDYzMDA2NTAwMjAwMDM1MDAyRTAwMzE+Ci9DcmVhdGlvbkRhdGUoRDoyMDE3
MDMyNzIyMTcxMyswMicwMCcpPj4KZW5kb2JqCgp4cmVmCjAgNDQ2CjAwMDAwMDAwMDAgNjU1MzUg
ZiAKMDAwMDA5MTc0OSAwMDAwMCBuIAowMDAwMDAwMDE5IDAwMDAwIG4gCjAwMDAwMDI4MjIgMDAw
MDAgbiAKMDAwMDEyODM3NiAwMDAwMCBuIAowMDAwMDk0NTU4IDAwMDAwIG4gCjAwMDAxMDAzOTEg
MDAwMDAgbiAKMDAwMDA5NTQ4OSAwMDAwMCBuIAowMDAwMDk0OTUxIDAwMDAwIG4gCjAwMDAwOTQ3
NzQgMDAwMDAgbiAKMDAwMDA5NDYzOCAwMDAwMCBuIAowMDAwMDk1MzUyIDAwMDAwIG4gCjAwMDAw
OTUxNzMgMDAwMDAgbiAKMDAwMDA5NTAzNiAwMDAwMCBuIAowMDAwMDk2NDM5IDAwMDAwIG4gCjAw
MDAwOTU4OTcgMDAwMDAgbiAKMDAwMDA5NTcxOCAwMDAwMCBuIAowMDAwMDk1NTgxIDAwMDAwIG4g
CjAwMDAwOTYzMDEgMDAwMDAgbiAKMDAwMDA5NjEyMiAwMDAwMCBuIAowMDAwMDk1OTg1IDAwMDAw
IG4gCjAwMDAwOTczOTEgMDAwMDAgbiAKMDAwMDA5Njg0OSAwMDAwMCBuIAowMDAwMDk2NjcwIDAw
MDAwIG4gCjAwMDAwOTY1MzMgMDAwMDAgbiAKMDAwMDA5NzI1MyAwMDAwMCBuIAowMDAwMDk3MDc0
IDAwMDAwIG4gCjAwMDAwOTY5MzcgMDAwMDAgbiAKMDAwMDA5ODM0MyAwMDAwMCBuIAowMDAwMDk3
ODAxIDAwMDAwIG4gCjAwMDAwOTc2MjIgMDAwMDAgbiAKMDAwMDA5NzQ4NSAwMDAwMCBuIAowMDAw
MDk4MjA1IDAwMDAwIG4gCjAwMDAwOTgwMjYgMDAwMDAgbiAKMDAwMDA5Nzg4OSAwMDAwMCBuIAow
MDAwMDk5Mjk1IDAwMDAwIG4gCjAwMDAwOTg3NTMgMDAwMDAgbiAKMDAwMDA5ODU3NCAwMDAwMCBu
IAowMDAwMDk4NDM3IDAwMDAwIG4gCjAwMDAwOTkxNTcgMDAwMDAgbiAKMDAwMDA5ODk3OCAwMDAw
MCBuIAowMDAwMDk4ODQxIDAwMDAwIG4gCjAwMDAxMDAxNTcgMDAwMDAgbiAKMDAwMDA5OTcwNiAw
MDAwMCBuIAowMDAwMDk5NTI3IDAwMDAwIG4gCjAwMDAwOTkzODkgMDAwMDAgbiAKMDAwMDEwMDAx
OSAwMDAwMCBuIAowMDAwMDk5ODQ0IDAwMDAwIG4gCjAwMDAxMDA2NjggMDAwMDAgbiAKMDAwMDEw
MDUxNCAwMDAwMCBuIAowMDAwMTAxMTg3IDAwMDAwIG4gCjAwMDAxMDA3NTggMDAwMDAgbiAKMDAw
MDEwMDg0NiAwMDAwMCBuIAowMDAwMTAwOTQ1IDAwMDAwIG4gCjAwMDAxMDEwMzMgMDAwMDAgbiAK
MDAwMDEwMTQ1OCAwMDAwMCBuIAowMDAwMTAxMzA0IDAwMDAwIG4gCjAwMDAxMDE3OTAgMDAwMDAg
biAKMDAwMDEwMTU0OCAwMDAwMCBuIAowMDAwMTAxNjM2IDAwMDAwIG4gCjAwMDAxMDIwNDcgMDAw
MDAgbiAKMDAwMDEwMTg5MyAwMDAwMCBuIAowMDAwMTAyMzYzIDAwMDAwIG4gCjAwMDAxMDIxMzcg
MDAwMDAgbiAKMDAwMDEwMjIyNSAwMDAwMCBuIAowMDAwMTAyNjUyIDAwMDAwIG4gCjAwMDAxMDI0
NjYgMDAwMDAgbiAKMDAwMDEwMjkxMSAwMDAwMCBuIAowMDAwMTAyNzQzIDAwMDAwIG4gCjAwMDAx
MDMxNzAgMDAwMDAgbiAKMDAwMDEwMzAwMiAwMDAwMCBuIAowMDAwMTAzNDI5IDAwMDAwIG4gCjAw
MDAxMDMyNjEgMDAwMDAgbiAKMDAwMDEwMzcwNCAwMDAwMCBuIAowMDAwMTAzNTIwIDAwMDAwIG4g
CjAwMDAxMDQzMTQgMDAwMDAgbiAKMDAwMDEwMzc5NSAwMDAwMCBuIAowMDAwMTAzODgzIDAwMDAw
IG4gCjAwMDAxMDM5NzEgMDAwMDAgbiAKMDAwMDEwNDA1OSAwMDAwMCBuIAowMDAwMTA0MTU4IDAw
MDAwIG4gCjAwMDAxMDQ2MjIgMDAwMDAgbiAKMDAwMDEwNDQzOCAwMDAwMCBuIAowMDAwMTA0ODgx
IDAwMDAwIG4gCjAwMDAxMDQ3MTMgMDAwMDAgbiAKMDAwMDEwNTE0MCAwMDAwMCBuIAowMDAwMTA0
OTcyIDAwMDAwIG4gCjAwMDAxMDUzOTkgMDAwMDAgbiAKMDAwMDEwNTIzMSAwMDAwMCBuIAowMDAw
MTA1NjU4IDAwMDAwIG4gCjAwMDAxMDU0OTAgMDAwMDAgbiAKMDAwMDEwNTkxNyAwMDAwMCBuIAow
MDAwMTA1NzQ5IDAwMDAwIG4gCjAwMDAxMDYxNzYgMDAwMDAgbiAKMDAwMDEwNjAwOCAwMDAwMCBu
IAowMDAwMTA2NDM1IDAwMDAwIG4gCjAwMDAxMDYyNjcgMDAwMDAgbiAKMDAwMDEwNjY5NCAwMDAw
MCBuIAowMDAwMTA2NTI2IDAwMDAwIG4gCjAwMDAxMDY5NTQgMDAwMDAgbiAKMDAwMDEwNjc4NSAw
MDAwMCBuIAowMDAwMTA3MjE2IDAwMDAwIG4gCjAwMDAxMDcwNDYgMDAwMDAgbiAKMDAwMDEwNzQ3
OSAwMDAwMCBuIAowMDAwMTA3MzA5IDAwMDAwIG4gCjAwMDAxMDc3NDIgMDAwMDAgbiAKMDAwMDEw
NzU3MiAwMDAwMCBuIAowMDAwMTA4MDA1IDAwMDAwIG4gCjAwMDAxMDc4MzUgMDAwMDAgbiAKMDAw
MDEwODI4NCAwMDAwMCBuIAowMDAwMTA4MDk4IDAwMDAwIG4gCjAwMDAxMDg2MjUgMDAwMDAgbiAK
MDAwMDEwODM3NyAwMDAwMCBuIAowMDAwMTA4NDY3IDAwMDAwIG4gCjAwMDAwOTE5MTIgMDAwMDAg
biAKMDAwMDAwMjg0MyAwMDAwMCBuIAowMDAwMDA2NjkwIDAwMDAwIG4gCjAwMDAxMDg5MTkgMDAw
MDAgbiAKMDAwMDEwODczMSAwMDAwMCBuIAowMDAwMTA5MTg1IDAwMDAwIG4gCjAwMDAxMDkwMTQg
MDAwMDAgbiAKMDAwMDEwOTQ1MSAwMDAwMCBuIAowMDAwMTA5MjgwIDAwMDAwIG4gCjAwMDAxMDk3
MTcgMDAwMDAgbiAKMDAwMDEwOTU0NiAwMDAwMCBuIAowMDAwMTA5OTgzIDAwMDAwIG4gCjAwMDAx
MDk4MTIgMDAwMDAgbiAKMDAwMDExMDI0OSAwMDAwMCBuIAowMDAwMTEwMDc4IDAwMDAwIG4gCjAw
MDAxMTA1MTUgMDAwMDAgbiAKMDAwMDExMDM0NCAwMDAwMCBuIAowMDAwMTEwNzgxIDAwMDAwIG4g
CjAwMDAxMTA2MTAgMDAwMDAgbiAKMDAwMDExMTA0NyAwMDAwMCBuIAowMDAwMTEwODc2IDAwMDAw
IG4gCjAwMDAxMTEzMTMgMDAwMDAgbiAKMDAwMDExMTE0MiAwMDAwMCBuIAowMDAwMTExNTgwIDAw
MDAwIG4gCjAwMDAxMTE0MDggMDAwMDAgbiAKMDAwMDExMTg0NyAwMDAwMCBuIAowMDAwMTExNjc1
IDAwMDAwIG4gCjAwMDAxMTIxMTQgMDAwMDAgbiAKMDAwMDExMTk0MiAwMDAwMCBuIAowMDAwMTEy
MzgxIDAwMDAwIG4gCjAwMDAxMTIyMDkgMDAwMDAgbiAKMDAwMDExMjY2NCAwMDAwMCBuIAowMDAw
MTEyNDc2IDAwMDAwIG4gCjAwMDAxMTMyMDYgMDAwMDAgbiAKMDAwMDExMjc1OSAwMDAwMCBuIAow
MDAwMTEyODUxIDAwMDAwIG4gCjAwMDAxMTI5NTQgMDAwMDAgbiAKMDAwMDExMzA0NiAwMDAwMCBu
IAowMDAwMTEzNDg1IDAwMDAwIG4gCjAwMDAxMTMzMjcgMDAwMDAgbiAKMDAwMDExMzk5NyAwMDAw
MCBuIAowMDAwMTEzNTc5IDAwMDAwIG4gCjAwMDAxMTM2NzEgMDAwMDAgbiAKMDAwMDExMzc2MyAw
MDAwMCBuIAowMDAwMTEzODU1IDAwMDAwIG4gCjAwMDAxMTU4NTQgMDAwMDAgbiAKMDAwMDExNDEy
MSAwMDAwMCBuIAowMDAwMTE0MjEzIDAwMDAwIG4gCjAwMDAxMTQ0MDIgMDAwMDAgbiAKMDAwMDEx
NDUxMyAwMDAwMCBuIAowMDAwMTE0NjA1IDAwMDAwIG4gCjAwMDAxMTQ2OTcgMDAwMDAgbiAKMDAw
MDExNDgwMCAwMDAwMCBuIAowMDAwMTE0ODkyIDAwMDAwIG4gCjAwMDAxMTQ5ODQgMDAwMDAgbiAK
MDAwMDExNTA5OCAwMDAwMCBuIAowMDAwMTE1MjEyIDAwMDAwIG4gCjAwMDAxMTU0MDEgMDAwMDAg
biAKMDAwMDExNTUxMiAwMDAwMCBuIAowMDAwMTE1NjA0IDAwMDAwIG4gCjAwMDAxMTU2OTYgMDAw
MDAgbiAKMDAwMDExNjIzMyAwMDAwMCBuIAowMDAwMTE2MDc1IDAwMDAwIG4gCjAwMDAxMTY2Njkg
MDAwMDAgbiAKMDAwMDExNjMyNyAwMDAwMCBuIAowMDAwMTE2NDE5IDAwMDAwIG4gCjAwMDAxMTY1
MTEgMDAwMDAgbiAKMDAwMDExNzcwMSAwMDAwMCBuIAowMDAwMTE2Nzg1IDAwMDAwIG4gCjAwMDAx
MTY4NzcgMDAwMDAgbiAKMDAwMDExNjk2OSAwMDAwMCBuIAowMDAwMTE3MDcyIDAwMDAwIG4gCjAw
MDAxMTcxNjQgMDAwMDAgbiAKMDAwMDExNzI1NiAwMDAwMCBuIAowMDAwMTE3MzU5IDAwMDAwIG4g
CjAwMDAxMTc0NTEgMDAwMDAgbiAKMDAwMDExNzU0MyAwMDAwMCBuIAowMDAwMTE4MDIzIDAwMDAw
IG4gCjAwMDAxMTc4NjUgMDAwMDAgbiAKMDAwMDExODQ1OSAwMDAwMCBuIAowMDAwMTE4MTE3IDAw
MDAwIG4gCjAwMDAxMTgyMDkgMDAwMDAgbiAKMDAwMDExODMwMSAwMDAwMCBuIAowMDAwMTE5ODg5
IDAwMDAwIG4gCjAwMDAxMTkxNDggMDAwMDAgbiAKMDAwMDExOTAyMiAwMDAwMCBuIAowMDAwMTE4
NTc1IDAwMDAwIG4gCjAwMDAxMTg2NjcgMDAwMDAgbiAKMDAwMDExODc1OSAwMDAwMCBuIAowMDAw
MTE4ODYyIDAwMDAwIG4gCjAwMDAxMTk4MDUgMDAwMDAgbiAKMDAwMDExOTY3OSAwMDAwMCBuIAow
MDAwMTE5MjMyIDAwMDAwIG4gCjAwMDAxMTkzMjQgMDAwMDAgbiAKMDAwMDExOTQyNyAwMDAwMCBu
IAowMDAwMTE5NTE5IDAwMDAwIG4gCjAwMDAwOTIxMDYgMDAwMDAgbiAKMDAwMDAwNjcxMyAwMDAw
MCBuIAowMDAwMDA5Mzc4IDAwMDAwIG4gCjAwMDAxMjAxNjYgMDAwMDAgbiAKMDAwMDExOTk3OCAw
MDAwMCBuIAowMDAwMTIwNDQ4IDAwMDAwIG4gCjAwMDAxMjAyNjEgMDAwMDAgbiAKMDAwMDEyMDc5
MyAwMDAwMCBuIAowMDAwMTIwNTQzIDAwMDAwIG4gCjAwMDAxMjA2MzQgMDAwMDAgbiAKMDAwMDEy
MTI0MCAwMDAwMCBuIAowMDAwMTIwOTAxIDAwMDAwIG4gCjAwMDAxMjA5OTIgMDAwMDAgbiAKMDAw
MDEyMTA4MyAwMDAwMCBuIAowMDAwMTIxNTQ1IDAwMDAwIG4gCjAwMDAxMjEzNTYgMDAwMDAgbiAK
MDAwMDEyMTgyNyAwMDAwMCBuIAowMDAwMTIxNjQwIDAwMDAwIG4gCjAwMDAxMjIyNzYgMDAwMDAg
biAKMDAwMDEyMTkyMiAwMDAwMCBuIAowMDAwMTIyMDEzIDAwMDAwIG4gCjAwMDAxMjIxMTYgMDAw
MDAgbiAKMDAwMDEyNDE3OCAwMDAwMCBuIAowMDAwMTIyNzU4IDAwMDAwIG4gCjAwMDAxMjI2NzMg
MDAwMDAgbiAKMDAwMDEyMjU2OCAwMDAwMCBuIAowMDAwMTIyMzkyIDAwMDAwIG4gCjAwMDAxMjMy
MDQgMDAwMDAgbiAKMDAwMDEyMzExOSAwMDAwMCBuIAowMDAwMTIzMDE0IDAwMDAwIG4gCjAwMDAx
MjI4NDAgMDAwMDAgbiAKMDAwMDEyMzY1MCAwMDAwMCBuIAowMDAwMTIzNTY1IDAwMDAwIG4gCjAw
MDAxMjM0NjAgMDAwMDAgbiAKMDAwMDEyMzI4NiAwMDAwMCBuIAowMDAwMTI0MDk2IDAwMDAwIG4g
CjAwMDAxMjQwMTEgMDAwMDAgbiAKMDAwMDEyMzkwNiAwMDAwMCBuIAowMDAwMTIzNzMyIDAwMDAw
IG4gCjAwMDAxMjQ0MzkgMDAwMDAgbiAKMDAwMDEyNDI4MSAwMDAwMCBuIAowMDAwMTI0NjkxIDAw
MDAwIG4gCjAwMDAxMjQ1MzMgMDAwMDAgbiAKMDAwMDEyNDk0OSAwMDAwMCBuIAowMDAwMTI0Nzkx
IDAwMDAwIG4gCjAwMDAxMjUyMDEgMDAwMDAgbiAKMDAwMDEyNTA0MyAwMDAwMCBuIAowMDAwMTI1
ODE2IDAwMDAwIG4gCjAwMDAxMjUyOTUgMDAwMDAgbiAKMDAwMDEyNTM4NyAwMDAwMCBuIAowMDAw
MTI1NDc5IDAwMDAwIG4gCjAwMDAxMjU1ODIgMDAwMDAgbiAKMDAwMDEyNTY3NCAwMDAwMCBuIAow
MDAwMTI2ODEzIDAwMDAwIG4gCjAwMDAxMjYyOTkgMDAwMDAgbiAKMDAwMDEyNjIxNCAwMDAwMCBu
IAowMDAwMTI2MTA5IDAwMDAwIG4gCjAwMDAxMjU5NTEgMDAwMDAgbiAKMDAwMDEyNjczMSAwMDAw
MCBuIAowMDAwMTI2NjQ2IDAwMDAwIG4gCjAwMDAxMjY1NDEgMDAwMDAgbiAKMDAwMDEyNjM4MSAw
MDAwMCBuIAowMDAwMTI3MDYwIDAwMDAwIG4gCjAwMDAxMjY5MDAgMDAwMDAgbiAKMDAwMDEyNzUz
MSAwMDAwMCBuIAowMDAwMTI3MjYyIDAwMDAwIG4gCjAwMDAxMjczNzMgMDAwMDAgbiAKMDAwMDEy
ODAxNiAwMDAwMCBuIAowMDAwMTI3NzQ3IDAwMDAwIG4gCjAwMDAxMjc4NTggMDAwMDAgbiAKMDAw
MDEyODI4MiAwMDAwMCBuIAowMDAwMTI4MTI0IDAwMDAwIG4gCjAwMDAxMzA4NzEgMDAwMDAgbiAK
MDAwMDEzMTAyNiAwMDAwMCBuIAowMDAwMTMxMTc5IDAwMDAwIG4gCjAwMDAxMzEzMTYgMDAwMDAg
biAKMDAwMDEzMDc1MyAwMDAwMCBuIAowMDAwMDA5NDAxIDAwMDAwIG4gCjAwMDAwNDQ4NDcgMDAw
MDAgbiAKMDAwMDA0NDg3MSAwMDAwMCBuIAowMDAwMDQ1MDc0IDAwMDAwIG4gCjAwMDAwNDU2OTQg
MDAwMDAgbiAKMDAwMDA0NjE1OSAwMDAwMCBuIAowMDAwMDUzOTAzIDAwMDAwIG4gCjAwMDAwNTM5
MjYgMDAwMDAgbiAKMDAwMDA1NDEzOSAwMDAwMCBuIAowMDAwMDU0NDU1IDAwMDAwIG4gCjAwMDAw
NTQ2NDkgMDAwMDAgbiAKMDAwMDA2NTYxMCAwMDAwMCBuIAowMDAwMDY1NjM0IDAwMDAwIG4gCjAw
MDAwNjU4MzcgMDAwMDAgbiAKMDAwMDA2NjM4MyAwMDAwMCBuIAowMDAwMDY2NzgzIDAwMDAwIG4g
CjAwMDAwODgzNDAgMDAwMDAgbiAKMDAwMDA4ODM2NCAwMDAwMCBuIAowMDAwMDg4NTcyIDAwMDAw
IG4gCjAwMDAwODkwNTEgMDAwMDAgbiAKMDAwMDA4OTM4OCAwMDAwMCBuIAowMDAwMDkwOTQwIDAw
MDAwIG4gCjAwMDAwOTA5NjMgMDAwMDAgbiAKMDAwMDA5MTE1NyAwMDAwMCBuIAowMDAwMDkxNDQ5
IDAwMDAwIG4gCjAwMDAwOTE2MTMgMDAwMDAgbiAKMDAwMDA5MTY5MiAwMDAwMCBuIAowMDAwMDky
MzAwIDAwMDAwIG4gCjAwMDAwOTIzNjAgMDAwMDAgbiAKMDAwMDA5MjUxNyAwMDAwMCBuIAowMDAw
MDkyNzQ1IDAwMDAwIG4gCjAwMDAwOTI5MDAgMDAwMDAgbiAKMDAwMDA5MzEyMSAwMDAwMCBuIAow
MDAwMDkzMzMzIDAwMDAwIG4gCjAwMDAwOTM1MjEgMDAwMDAgbiAKMDAwMDA5Mzc0MSAwMDAwMCBu
IAowMDAwMDkzOTQ5IDAwMDAwIG4gCjAwMDAwOTQxNjkgMDAwMDAgbiAKMDAwMDA5NDMzMyAwMDAw
MCBuIAowMDAwMTI5MDEwIDAwMDAwIG4gCjAwMDAwOTQ1MDggMDAwMDAgbiAKMDAwMDA5NDcyNCAw
MDAwMCBuIAowMDAwMDk0ODc0IDAwMDAwIG4gCjAwMDAwOTUxMjMgMDAwMDAgbiAKMDAwMDA5NTI3
NSAwMDAwMCBuIAowMDAwMDk1NDM5IDAwMDAwIG4gCjAwMDAwOTU2NjggMDAwMDAgbiAKMDAwMDA5
NTgyMCAwMDAwMCBuIAowMDAwMDk2MDcyIDAwMDAwIG4gCjAwMDAwOTYyMjQgMDAwMDAgbiAKMDAw
MDA5NjM4OSAwMDAwMCBuIAowMDAwMDk2NjIwIDAwMDAwIG4gCjAwMDAwOTY3NzIgMDAwMDAgbiAK
MDAwMDA5NzAyNCAwMDAwMCBuIAowMDAwMDk3MTc2IDAwMDAwIG4gCjAwMDAwOTczNDEgMDAwMDAg
biAKMDAwMDA5NzU3MiAwMDAwMCBuIAowMDAwMDk3NzI0IDAwMDAwIG4gCjAwMDAwOTc5NzYgMDAw
MDAgbiAKMDAwMDA5ODEyOCAwMDAwMCBuIAowMDAwMDk4MjkzIDAwMDAwIG4gCjAwMDAwOTg1MjQg
MDAwMDAgbiAKMDAwMDA5ODY3NiAwMDAwMCBuIAowMDAwMDk4OTI4IDAwMDAwIG4gCjAwMDAwOTkw
ODAgMDAwMDAgbiAKMDAwMDA5OTI0NSAwMDAwMCBuIAowMDAwMDk5NDc3IDAwMDAwIG4gCjAwMDAw
OTk2MjkgMDAwMDAgbiAKMDAwMDA5OTc5NCAwMDAwMCBuIAowMDAwMDk5OTQyIDAwMDAwIG4gCjAw
MDAxMDAxMDcgMDAwMDAgbiAKMDAwMDEwMDI1MSAwMDAwMCBuIAowMDAwMTAwNjAyIDAwMDAwIG4g
CjAwMDAxMDExMjEgMDAwMDAgbiAKMDAwMDEwMTM5MiAwMDAwMCBuIAowMDAwMTAxNzI0IDAwMDAw
IG4gCjAwMDAxMDE5ODEgMDAwMDAgbiAKMDAwMDEwMjMxMyAwMDAwMCBuIAowMDAwMTAyNTUyIDAw
MDAwIG4gCjAwMDAxMDI4MjkgMDAwMDAgbiAKMDAwMDEwMzA4OCAwMDAwMCBuIAowMDAwMTAzMzQ3
IDAwMDAwIG4gCjAwMDAxMDM2MDYgMDAwMDAgbiAKMDAwMDEwNDI0NiAwMDAwMCBuIAowMDAwMTA0
NTI0IDAwMDAwIG4gCjAwMDAxMDQ3OTkgMDAwMDAgbiAKMDAwMDEwNTA1OCAwMDAwMCBuIAowMDAw
MTA1MzE3IDAwMDAwIG4gCjAwMDAxMDU1NzYgMDAwMDAgbiAKMDAwMDEwNTgzNSAwMDAwMCBuIAow
MDAwMTA2MDk0IDAwMDAwIG4gCjAwMDAxMDYzNTMgMDAwMDAgbiAKMDAwMDEwNjYxMiAwMDAwMCBu
IAowMDAwMTA2ODcyIDAwMDAwIG4gCjAwMDAxMDcxMzQgMDAwMDAgbiAKMDAwMDEwNzM5NyAwMDAw
MCBuIAowMDAwMTA3NjYwIDAwMDAwIG4gCjAwMDAxMDc5MjMgMDAwMDAgbiAKMDAwMDEwODE4NiAw
MDAwMCBuIAowMDAwMTA4NTU3IDAwMDAwIG4gCjAwMDAxMDg4MjAgMDAwMDAgbiAKMDAwMDEwOTEw
MyAwMDAwMCBuIAowMDAwMTA5MzY5IDAwMDAwIG4gCjAwMDAxMDk2MzUgMDAwMDAgbiAKMDAwMDEw
OTkwMSAwMDAwMCBuIAowMDAwMTEwMTY3IDAwMDAwIG4gCjAwMDAxMTA0MzMgMDAwMDAgbiAKMDAw
MDExMDY5OSAwMDAwMCBuIAowMDAwMTEwOTY1IDAwMDAwIG4gCjAwMDAxMTEyMzEgMDAwMDAgbiAK
MDAwMDExMTQ5OCAwMDAwMCBuIAowMDAwMTExNzY1IDAwMDAwIG4gCjAwMDAxMTIwMzIgMDAwMDAg
biAKMDAwMDExMjI5OSAwMDAwMCBuIAowMDAwMTEyNTY2IDAwMDAwIG4gCjAwMDAxMTMxMzggMDAw
MDAgbiAKMDAwMDExMzQxOSAwMDAwMCBuIAowMDAwMTEzOTQ3IDAwMDAwIG4gCjAwMDAxMTQzMDUg
MDAwMDAgbiAKMDAwMDExNDM1MCAwMDAwMCBuIAowMDAwMTE1MzA0IDAwMDAwIG4gCjAwMDAxMTUz
NDkgMDAwMDAgbiAKMDAwMDExNTc4OCAwMDAwMCBuIAowMDAwMTE2MTY3IDAwMDAwIG4gCjAwMDAx
MTY2MDMgMDAwMDAgbiAKMDAwMDExNzYzNSAwMDAwMCBuIAowMDAwMTE3OTU3IDAwMDAwIG4gCjAw
MDAxMTgzOTMgMDAwMDAgbiAKMDAwMDExODk1NCAwMDAwMCBuIAowMDAwMTE5NjExIDAwMDAwIG4g
CjAwMDAxMjAwNjcgMDAwMDAgbiAKMDAwMDEyMDM1MCAwMDAwMCBuIAowMDAwMTIwNzI1IDAwMDAw
IG4gCjAwMDAxMjExNzQgMDAwMDAgbiAKMDAwMDEyMTQ0NSAwMDAwMCBuIAowMDAwMTIxNzI5IDAw
MDAwIG4gCjAwMDAxMjIyMDggMDAwMDAgbiAKMDAwMDEyMjQ4NCAwMDAwMCBuIAowMDAwMTIyOTMy
IDAwMDAwIG4gCjAwMDAxMjMzNzggMDAwMDAgbiAKMDAwMDEyMzgyNCAwMDAwMCBuIAowMDAwMTI0
MzczIDAwMDAwIG4gCjAwMDAxMjQ2MjUgMDAwMDAgbiAKMDAwMDEyNDg4MyAwMDAwMCBuIAowMDAw
MTI1MTM1IDAwMDAwIG4gCjAwMDAxMjU3NjYgMDAwMDAgbiAKMDAwMDEyNjA0MyAwMDAwMCBuIAow
MDAwMTI2NDczIDAwMDAwIG4gCjAwMDAxMjY5OTIgMDAwMDAgbiAKMDAwMDEyNzE1NCAwMDAwMCBu
IAowMDAwMTI3MTk5IDAwMDAwIG4gCjAwMDAxMjc0NjUgMDAwMDAgbiAKMDAwMDEyNzYzOSAwMDAw
MCBuIAowMDAwMTI3Njg0IDAwMDAwIG4gCjAwMDAxMjc5NTAgMDAwMDAgbiAKMDAwMDEyODIxNiAw
MDAwMCBuIAowMDAwMTI5MzQ5IDAwMDAwIG4gCjAwMDAxMzE0NTIgMDAwMDAgbiAKMDAwMDEzMTYy
MCAwMDAwMCBuIAp0cmFpbGVyCjw8L1NpemUgNDQ2L1Jvb3QgNDQ0IDAgUgovSW5mbyA0NDUgMCBS
Ci9JRCBbIDwzRDZCOTI5QTU0NEI5NTUzOUE5NDU3Mjc4MTY3ODcxMz4KPDNENkI5MjlBNTQ0Qjk1
NTM5QTk0NTcyNzgxNjc4NzEzPiBdCi9Eb2NDaGVja3N1bSAvQTA1N0Y0NzU2QjUwQUIwMDk4NkRB
RDNCRTQ3MUQ0QUEKPj4Kc3RhcnR4cmVmCjEzMTg3MAolJUVPRgo=
------=_Part_9069_1290673214.1490646431390--
.
Author: Christopher Di Bella <cjdb.ns@gmail.com>
Date: Mon, 27 Mar 2017 20:51:10 +0000
Raw View
--94eb2c122e4e760c2d054bbc817e
Content-Type: text/plain; charset=UTF-8
Hi,
Thanks for taking the time out to write this! It seems like there is
motivation, but I can't quite place my finger on it. If a variable isn't
going to be used again, and can't be referenced, what are the benefits of
its persistence have over `Foo{bar};`?
Cheers,
Chris
On Tue., 28 Mar. 2017, 07:27 Alberto Barbati, <albertobarbati@gmail.com>
wrote:
> Hello,
>
> this is a draft for a proposal to add a special meaning to the identifier
> __ (double underscore) so that it can be used (even repeatedly in the same
> lexical scope) for all variables whose name is not important and that is no
> longer needed after declaration. The draft includes a few examples.
>
> Is there any interest in this?
>
> Thanks in advance,
>
> Alberto
>
> --
> 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/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp.org?utm_medium=email&utm_source=footer>
> .
>
--
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/CACL3gUVC1R9occL7vwiNTb9s4rD-%2Baemb4AprquTjQvr-xRjwg%40mail.gmail.com.
--94eb2c122e4e760c2d054bbc817e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<p dir=3D"ltr">Hi,</p>
<p dir=3D"ltr">Thanks for taking the time out to write this! It seems like =
there is motivation, but I can't quite place my finger on it. If a vari=
able isn't going to be used again, and can't be referenced, what ar=
e the benefits of its persistence have over `Foo{bar};`?</p>
<p dir=3D"ltr">Cheers,</p>
<p dir=3D"ltr">Chris </p>
<br><div class=3D"gmail_quote"><div dir=3D"ltr">On Tue., 28 Mar. 2017, 07:2=
7 Alberto Barbati, <<a href=3D"mailto:albertobarbati@gmail.com">albertob=
arbati@gmail.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" =
style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><di=
v dir=3D"ltr" class=3D"gmail_msg">Hello,<br class=3D"gmail_msg"><br class=
=3D"gmail_msg">this is a draft for a proposal to add a special meaning to t=
he identifier __ (double underscore) so that it can be used (even repeatedl=
y in the same lexical scope) for all variables whose name is not important =
and that is no longer needed after declaration. The draft includes a few ex=
amples.<br class=3D"gmail_msg"><br class=3D"gmail_msg">Is there any interes=
t in this?<br class=3D"gmail_msg"><br class=3D"gmail_msg">Thanks in advance=
,<br class=3D"gmail_msg"><br class=3D"gmail_msg">Alberto<br class=3D"gmail_=
msg"><br class=3D"gmail_msg"></div>
<p class=3D"gmail_msg"></p>
-- <br class=3D"gmail_msg">
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br class=3D"gmail_msg=
">
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" class=3D"gm=
ail_msg" target=3D"_blank">std-proposals+unsubscribe@isocpp.org</a>.<br cla=
ss=3D"gmail_msg">
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" class=3D"gmail_msg" target=3D"_blank">std-proposals@isocpp.org</a>.<b=
r class=3D"gmail_msg">
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" class=3D"gmail_msg=
" target=3D"_blank">https://groups.google.com/a/isocpp.org/d/msgid/std-prop=
osals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp.org</a>.<br class=3D"gm=
ail_msg">
</blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CACL3gUVC1R9occL7vwiNTb9s4rD-%2Baemb4=
AprquTjQvr-xRjwg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CACL3gUVC1R9occ=
L7vwiNTb9s4rD-%2Baemb4AprquTjQvr-xRjwg%40mail.gmail.com</a>.<br />
--94eb2c122e4e760c2d054bbc817e--
.
Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Tue, 28 Mar 2017 00:02:37 +0300
Raw View
On 27 March 2017 at 23:27, Alberto Barbati <albertobarbati@gmail.com> wrote:
> Hello,
>
> this is a draft for a proposal to add a special meaning to the identifier __
> (double underscore) so that it can be used (even repeatedly in the same
> lexical scope) for all variables whose name is not important and that is no
> longer needed after declaration. The draft includes a few examples.
>
> Is there any interest in this?
There certainly is: http://cplusplus.github.io/EWG/ewg-active.html#35
--
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/CAFk2RUZ3%2Byru%2BcYSEtxJ1TbZuyWp71gpCGoq%3DWE_8EAE%3D%2Bh%3D2g%40mail.gmail.com.
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Mon, 27 Mar 2017 14:30:01 -0700
Raw View
On segunda-feira, 27 de mar=C3=A7o de 2017 13:27:11 PDT Alberto Barbati wro=
te:
> Hello,
>=20
> this is a draft for a proposal to add a special meaning to the identifier
> __ (double underscore) so that it can be used (even repeatedly in the sam=
e
> lexical scope) for all variables whose name is not important and that is =
no
> longer needed after declaration. The draft includes a few examples.
>=20
> Is there any interest in this?
Just remember that there are already existing codebases using __ as identif=
ier=20
or macro names.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/2752007.h0gmCLmLCc%40tjmaciei-mobl1.
.
Author: "'Jeffrey Yasskin' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Date: Mon, 27 Mar 2017 15:16:58 -0700
Raw View
--94eb2c08046adb8594054bbdb4b4
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Mon, Mar 27, 2017 at 2:30 PM, Thiago Macieira <thiago@macieira.org>
wrote:
> On segunda-feira, 27 de mar=C3=A7o de 2017 13:27:11 PDT Alberto Barbati w=
rote:
> > Hello,
> >
> > this is a draft for a proposal to add a special meaning to the identifi=
er
> > __ (double underscore) so that it can be used (even repeatedly in the
> same
> > lexical scope) for all variables whose name is not important and that i=
s
> no
> > longer needed after declaration. The draft includes a few examples.
> >
> > Is there any interest in this?
>
> Just remember that there are already existing codebases using __ as
> identifier
> or macro names.
>
They're not allowed. "_" is ok outside of the global namespace, but "__" is
reserved by [lex.name].
Jeffrey
--=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/CANh-dXm5Bb-w%2B89ZVMESVqzGEz7yjiQYQp9gVrn8Om1jX=
uKyfg%40mail.gmail.com.
--94eb2c08046adb8594054bbdb4b4
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On M=
on, Mar 27, 2017 at 2:30 PM, Thiago Macieira <span dir=3D"ltr"><<a href=
=3D"mailto:thiago@macieira.org" target=3D"_blank" class=3D"cremed">thiago@m=
acieira.org</a>></span> wrote:<br><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span c=
lass=3D"">On segunda-feira, 27 de mar=C3=A7o de 2017 13:27:11 PDT Alberto B=
arbati wrote:<br>
> Hello,<br>
><br>
> this is a draft for a proposal to add a special meaning to the identif=
ier<br>
> __ (double underscore) so that it can be used (even repeatedly in the =
same<br>
> lexical scope) for all variables whose name is not important and that =
is no<br>
> longer needed after declaration. The draft includes a few examples.<br=
>
><br>
> Is there any interest in this?<br>
<br>
</span>Just remember that there are already existing codebases using __ as =
identifier<br>
or macro names.<br></blockquote><div><br></div><div>They're not allowed=
.. "_" is ok outside of the global namespace, but "__" i=
s reserved by [<a href=3D"http://lex.name">lex.name</a>].</div><div><br></d=
iv><div>Jeffrey</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" 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/CANh-dXm5Bb-w%2B89ZVMESVqzGEz7yjiQYQp=
9gVrn8Om1jXuKyfg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CANh-dXm5Bb-w%2=
B89ZVMESVqzGEz7yjiQYQp9gVrn8Om1jXuKyfg%40mail.gmail.com</a>.<br />
--94eb2c08046adb8594054bbdb4b4--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Mon, 27 Mar 2017 22:39:20 -0700
Raw View
On segunda-feira, 27 de mar=C3=A7o de 2017 15:16:58 PDT 'Jeffrey Yasskin' v=
ia ISO C
++ Standard - Future Proposals wrote:
> > Just remember that there are already existing codebases using __ as
> > identifier
> > or macro names.
>=20
> They're not allowed. "_" is ok outside of the global namespace, but "__" =
is
> reserved by [lex.name].
I know it is.
And yet it's in use.
https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/6096248.pKJ4QPQkKS%40tjmaciei-mobl1.
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 08:18:41 +0200
Raw View
--Apple-Mail-5B2EAA3A-10BD-41AB-88C8-C0C45CA4A342
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Hi Chris,
Even if it cannot be referenced again, a __ variable is still a variable an=
d therefore it ends its lifetime at the end of the lexical scope. Its destr=
uctor is therefore called when the scope is exited either normally or excep=
tionally and no sooner. This is the main point of the RAII idiom. On the ot=
her hand, `Foo{bar};` creates a temporary object that is immediately destro=
yed at the end of the statement.
Cheers,
Alberto
> Il giorno 27 mar 2017, alle ore 22:51, Christopher Di Bella <cjdb.ns@gmai=
l.com> ha scritto:
>=20
> Hi,
>=20
> Thanks for taking the time out to write this! It seems like there is moti=
vation, but I can't quite place my finger on it. If a variable isn't going =
to be used again, and can't be referenced, what are the benefits of its per=
sistence have over `Foo{bar};`?
>=20
> Cheers,
>=20
> Chris
>=20
>=20
>> On Tue., 28 Mar. 2017, 07:27 Alberto Barbati, <albertobarbati@gmail.com>=
wrote:
>> Hello,
>>=20
>> this is a draft for a proposal to add a special meaning to the identifie=
r __ (double underscore) so that it can be used (even repeatedly in the sam=
e lexical scope) for all variables whose name is not important and that is =
no longer needed after declaration. The draft includes a few examples.
>>=20
>> Is there any interest in this?
>>=20
>> Thanks in advance,
>>=20
>> Alberto
>>=20
>> --=20
>> You received this message because you are subscribed to the Google Group=
s "ISO C++ Standard - Future Proposals" group.
>> To unsubscribe from this group and stop receiving emails from it, send a=
n 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/iso=
cpp.org/d/msgid/std-proposals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp=
..org.
>=20
> --=20
> You received this message because you are subscribed to a topic in the Go=
ogle Groups "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this topic, visit https://groups.google.com/a/isocpp.=
org/d/topic/std-proposals/BTVwFqDkhXk/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to std-p=
roposals+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/isoc=
pp.org/d/msgid/std-proposals/CACL3gUVC1R9occL7vwiNTb9s4rD-%2Baemb4AprquTjQv=
r-xRjwg%40mail.gmail.com.
--=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/9C5ACBB5-5FF7-495E-9DF4-6DD5E857ED72%40gmail.com=
..
--Apple-Mail-5B2EAA3A-10BD-41AB-88C8-C0C45CA4A342
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></div><div>Hi Chris,</div><div><br=
></div><div>Even if it cannot be referenced again, a __ variable is still a=
variable and therefore it ends its lifetime at the end of the lexical scop=
e. Its destructor is therefore called when the scope is exited either norma=
lly or exceptionally and no sooner. This is the main point of the RAII idio=
m. On the other hand, `Foo{bar};` creates a temporary object that is immedi=
ately destroyed at the end of the statement.</div><div><br></div><div>Cheer=
s,</div><div><br></div><div>Alberto</div><div><br>Il giorno 27 mar 2017, al=
le ore 22:51, Christopher Di Bella <<a href=3D"mailto:cjdb.ns@gmail.com"=
>cjdb.ns@gmail.com</a>> ha scritto:<br><br></div><blockquote type=3D"cit=
e"><div><p dir=3D"ltr">Hi,</p>
<p dir=3D"ltr">Thanks for taking the time out to write this! It seems like =
there is motivation, but I can't quite place my finger on it. If a variable=
isn't going to be used again, and can't be referenced, what are the benefi=
ts of its persistence have over `Foo{bar};`?</p>
<p dir=3D"ltr">Cheers,</p>
<p dir=3D"ltr">Chris </p>
<br><div class=3D"gmail_quote"><div dir=3D"ltr">On Tue., 28 Mar. 2017, 07:2=
7 Alberto Barbati, <<a href=3D"mailto:albertobarbati@gmail.com">albertob=
arbati@gmail.com</a>> wrote:<br></div><blockquote class=3D"gmail_quote" =
style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><di=
v dir=3D"ltr" class=3D"gmail_msg">Hello,<br class=3D"gmail_msg"><br class=
=3D"gmail_msg">this is a draft for a proposal to add a special meaning to t=
he identifier __ (double underscore) so that it can be used (even repeatedl=
y in the same lexical scope) for all variables whose name is not important =
and that is no longer needed after declaration. The draft includes a few ex=
amples.<br class=3D"gmail_msg"><br class=3D"gmail_msg">Is there any interes=
t in this?<br class=3D"gmail_msg"><br class=3D"gmail_msg">Thanks in advance=
,<br class=3D"gmail_msg"><br class=3D"gmail_msg">Alberto<br class=3D"gmail_=
msg"><br class=3D"gmail_msg"></div>
<p class=3D"gmail_msg"></p>
-- <br class=3D"gmail_msg">
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.<br class=3D"gmail_msg">
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" class=3D"gm=
ail_msg" target=3D"_blank">std-proposals+unsubscribe@isocpp.org</a>.<br cla=
ss=3D"gmail_msg">
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" class=3D"gmail_msg" target=3D"_blank">std-proposals@isocpp.org</a>.<b=
r class=3D"gmail_msg">
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" class=3D"gmail_msg=
" target=3D"_blank">https://groups.google.com/a/isocpp.org/d/msgid/std-prop=
osals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp.org</a>.<br class=3D"gm=
ail_msg">
</blockquote></div>
<p></p>
-- <br>
You received this message because you are subscribed to a topic in the Goog=
le Groups "ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this topic, visit <a href=3D"https://groups.google.com/=
a/isocpp.org/d/topic/std-proposals/BTVwFqDkhXk/unsubscribe">https://groups.=
google.com/a/isocpp.org/d/topic/std-proposals/BTVwFqDkhXk/unsubscribe</a>.<=
br>
To unsubscribe from this group and all its topics, send an email to <a href=
=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposals+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/CACL3gUVC1R9occL7vwiNTb9s4rD-%2Baemb4=
AprquTjQvr-xRjwg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoote=
r">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CACL3gUVC1R=
9occL7vwiNTb9s4rD-%2Baemb4AprquTjQvr-xRjwg%40mail.gmail.com</a>.<br>
</div></blockquote></body></html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/9C5ACBB5-5FF7-495E-9DF4-6DD5E857ED72%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/9C5ACBB5-5FF7-495E-9DF4-6DD5E857ED72%=
40gmail.com</a>.<br />
--Apple-Mail-5B2EAA3A-10BD-41AB-88C8-C0C45CA4A342--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 08:22:49 +0200
Raw View
Hi Ville,
Thanks a lot for the pointer! Whoa! This issue is ancient... I'll make sure the next version will have a reference to it and address the concerns it raises.
Cheers,
Alberto
> Il giorno 27 mar 2017, alle ore 23:02, Ville Voutilainen <ville.voutilainen@gmail.com> ha scritto:
>
>> On 27 March 2017 at 23:27, Alberto Barbati <albertobarbati@gmail.com> wrote:
>> Hello,
>>
>> this is a draft for a proposal to add a special meaning to the identifier __
>> (double underscore) so that it can be used (even repeatedly in the same
>> lexical scope) for all variables whose name is not important and that is no
>> longer needed after declaration. The draft includes a few examples.
>>
>> Is there any interest in this?
>
> There certainly is: http://cplusplus.github.io/EWG/ewg-active.html#35
>
> --
> You received this message because you are subscribed to a topic in the Google Groups "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this topic, visit https://groups.google.com/a/isocpp.org/d/topic/std-proposals/BTVwFqDkhXk/unsubscribe.
> To unsubscribe from this group and all its topics, 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/CAFk2RUZ3%2Byru%2BcYSEtxJ1TbZuyWp71gpCGoq%3DWE_8EAE%3D%2Bh%3D2g%40mail.gmail.com.
--
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/7EF863A1-1454-4116-9164-676FF19BF923%40gmail.com.
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 08:47:55 +0200
Raw View
> Il giorno 28 mar 2017, alle ore 07:39, Thiago Macieira <thiago@macieira.o=
rg> ha scritto:
>=20
> On segunda-feira, 27 de mar=C3=A7o de 2017 15:16:58 PDT 'Jeffrey Yasskin'=
via ISO C
> ++ Standard - Future Proposals wrote:
>>> Just remember that there are already existing codebases using __ as
>>> identifier
>>> or macro names.
>>=20
>> They're not allowed. "_" is ok outside of the global namespace, but "__"=
is
>> reserved by [lex.name].
>=20
> I know it is.
>=20
> And yet it's in use.
> https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33
Thanks Thiago for the pointer. According to my (possibly incorrect) interpr=
etation this code raises undefined behavior because __ is reserved "for any=
use", which I would expect includes the use as a macro name. I may be wron=
g, but I'd expect little sympathy in the committee about potentially breaki=
ng it. By the way, this code might possibly not break, because they were cl=
ever to put #undefs in it. Incidentally, the code would indeed break if we =
defined __ to be a macro...
Cheers,
Alberto
--=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/4E0805FE-B97D-4A93-956D-9281B3207F39%40gmail.com=
..
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 00:04:11 -0700
Raw View
Em segunda-feira, 27 de mar=C3=A7o de 2017, =C3=A0s 23:47:55 PDT, Alberto B=
arbati=20
escreveu:
> > And yet it's in use.
> > https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33
>=20
> Thanks Thiago for the pointer. According to my (possibly incorrect)
> interpretation this code raises undefined behavior because __ is reserved
> "for any use", which I would expect includes the use as a macro name. I m=
ay
> be wrong, but I'd expect little sympathy in the committee about potential=
ly
> breaking it. By the way, this code might possibly not break, because they
> were clever to put #undefs in it. Incidentally, the code would indeed bre=
ak
> if we defined __ to be a macro...
Right. We can say it's V8's own fault for using a reserved identifier. It's=
=20
like when Qt (qlalr) had an identifier called _Nullable, but that got=20
repurposed by a recent Clang change.
I'm just saying it's known to be in use in a fairly major project. You know=
,=20
the one that is behind Node.js and a whole ecosystem. The argument in the=
=20
paper that says it's little used is incorrect: it's not like pre-C++11 "aut=
o",=20
which had exactly one use in the entire Microsoft source code.
I guess we could convince GCC and Clang to print a warning about it if it=
=20
looks like this is going forward, so the V8 developers start fixing it. May=
be=20
we'll get some of these fixed too:
http://lxr.free-electrons.com/source/include/linux/compiler.h#L115
http://lxr.free-electrons.com/source/include/asm-generic/fixmap.h#L73
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/3421677.yAxhhm3ryH%40tjmaciei-mobl1.
.
Author: Viacheslav Usov <via.usov@gmail.com>
Date: Tue, 28 Mar 2017 11:08:18 +0200
Raw View
--001a114999c602cf65054bc6cd8e
Content-Type: text/plain; charset=UTF-8
On Tue, Mar 28, 2017 at 8:22 AM, Alberto Barbati <albertobarbati@gmail.com>
wrote:
> Thanks a lot for the pointer! Whoa! This issue is ancient... I'll make
sure the next version will have a reference to it and address the concerns
it raises.
This keeps coming back to this forum. For example, this:
https://groups.google.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/G8WC37LVAAAJ
My take on this is that we should have an operator or a keyword that
extends the lifetime of a temporary, as discussed here
https://groups.google.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/bdUinF-3AQAJ
and
subsequent posts, notably this
https://groups.google.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/bdUinF-3AQAJ
and this
https://groups.google.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/5JrGmugAAgAJ
Cheers,
V.
--
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/CAA7YVg1m%2BZHyDdVf6UCVL98Ne_FvGt6SMNZd4OUgY3pHFyxNwg%40mail.gmail.com.
--001a114999c602cf65054bc6cd8e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
ue, Mar 28, 2017 at 8:22 AM, Alberto Barbati <span dir=3D"ltr"><<a href=
=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">albertobarbati@gmail=
..com</a>></span> wrote:<br><div><br></div><div>> Thanks a lot for the=
pointer! Whoa! This issue is ancient... I'll make sure the next versio=
n will have a reference to it and address the concerns it raises.</div><div=
><br></div><div>This keeps coming back to this forum. For example, this:=C2=
=A0<a href=3D"https://groups.google.com/a/isocpp.org/d/msg/std-proposals/io=
i76TkG6g4/G8WC37LVAAAJ">https://groups.google.com/a/isocpp.org/d/msg/std-pr=
oposals/ioi76TkG6g4/G8WC37LVAAAJ</a></div><div><br></div><div>My take on th=
is is that we should have an operator or a keyword that extends the lifetim=
e of a temporary, as discussed here <a href=3D"https://groups.google.com/a/=
isocpp.org/d/msg/std-proposals/ioi76TkG6g4/bdUinF-3AQAJ">https://groups.goo=
gle.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/bdUinF-3AQAJ</a>=C2=A0=
and subsequent posts, notably this=C2=A0<a href=3D"https://groups.google.co=
m/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/bdUinF-3AQAJ">https://groups=
..google.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/bdUinF-3AQAJ</a> a=
nd this=C2=A0<a href=3D"https://groups.google.com/a/isocpp.org/d/msg/std-pr=
oposals/ioi76TkG6g4/5JrGmugAAgAJ">https://groups.google.com/a/isocpp.org/d/=
msg/std-proposals/ioi76TkG6g4/5JrGmugAAgAJ</a></div><div><br></div><div>Che=
ers,</div><div>V.</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" 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/CAA7YVg1m%2BZHyDdVf6UCVL98Ne_FvGt6SMN=
Zd4OUgY3pHFyxNwg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAA7YVg1m%2BZHy=
DdVf6UCVL98Ne_FvGt6SMNZd4OUgY3pHFyxNwg%40mail.gmail.com</a>.<br />
--001a114999c602cf65054bc6cd8e--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 11:09:54 +0200
Raw View
--001a114e5364ba3ed3054bc6d233
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
2017-03-28 9:04 GMT+02:00 Thiago Macieira <thiago@macieira.org>:
> Em segunda-feira, 27 de mar=C3=A7o de 2017, =C3=A0s 23:47:55 PDT, Alberto=
Barbati
> escreveu:
> > > And yet it's in use.
> > > https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33
> >
> > Thanks Thiago for the pointer. According to my (possibly incorrect)
> > interpretation this code raises undefined behavior because __ is reserv=
ed
> > "for any use", which I would expect includes the use as a macro name. I
> may
> > be wrong, but I'd expect little sympathy in the committee about
> potentially
> > breaking it. By the way, this code might possibly not break, because th=
ey
> > were clever to put #undefs in it. Incidentally, the code would indeed
> break
> > if we defined __ to be a macro...
>
> Right. We can say it's V8's own fault for using a reserved identifier. It=
's
> like when Qt (qlalr) had an identifier called _Nullable, but that got
> repurposed by a recent Clang change.
>
In this particular instance, V8's programmer could and probably should have
used a non-reserved name (for example "m_" would have been a better choice
regardless). Even the choice of _Nullable was ill-conceived, since
identifiers beginning with an underscore and an uppercase letter are also
reserved.
> I'm just saying it's known to be in use in a fairly major project. You
> know,
> the one that is behind Node.js and a whole ecosystem. The argument in the
> paper that says it's little used is incorrect: it's not like pre-C++11
> "auto",
> which had exactly one use in the entire Microsoft source code.
>
I said that it's little used in the two librariesI have checked (VS2015 and
libc++). For user code such as this, all I said is that "the proposal
should not break code", which is correct: the identifier __ should not have
been used in the first place, so this is a case of code that someone might
say "deserves to be broken".
> I guess we could convince GCC and Clang to print a warning about it if it
> looks like this is going forward, so the V8 developers start fixing it.
> Maybe
> we'll get some of these fixed too:
>
> http://lxr.free-electrons.com/source/include/linux/compiler.h#L115
> http://lxr.free-electrons.com/source/include/asm-generic/fixmap.h#L73
The first one, that #defines "if", is particularly disturbing.
Cheers,
Alberto
--=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/CAF3xnJRtyCRSqc5dh7fpf1pSQem_Lw4SbePQxY3dBC_xEEi=
sEg%40mail.gmail.com.
--001a114e5364ba3ed3054bc6d233
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">2017=
-03-28 9:04 GMT+02:00 Thiago Macieira <span dir=3D"ltr"><<a href=3D"mail=
to:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</a>></span=
>:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-l=
eft:1px #ccc solid;padding-left:1ex">Em segunda-feira, 27 de mar=C3=A7o de =
2017, =C3=A0s 23:47:55 PDT, Alberto Barbati<br>
escreveu:<br>
<span class=3D"">> > And yet it's in use.<br>
> > <a href=3D"https://github.com/v8/v8/blob/master/src/x64/codegen-x=
64.cc#L33" rel=3D"noreferrer" target=3D"_blank">https://github.com/v8/v8/bl=
ob/<wbr>master/src/x64/codegen-x64.cc#<wbr>L33</a><br>
><br>
> Thanks Thiago for the pointer. According to my (possibly incorrect)<br=
>
> interpretation this code raises undefined behavior because __ is reser=
ved<br>
> "for any use", which I would expect includes the use as a ma=
cro name. I may<br>
> be wrong, but I'd expect little sympathy in the committee about po=
tentially<br>
> breaking it. By the way, this code might possibly not break, because t=
hey<br>
> were clever to put #undefs in it. Incidentally, the code would indeed =
break<br>
> if we defined __ to be a macro...<br>
<br>
</span>Right. We can say it's V8's own fault for using a reserved i=
dentifier. It's<br>
like when Qt (qlalr) had an identifier called _Nullable, but that got<br>
repurposed by a recent Clang change.<br></blockquote><div><br></div><div>In=
this particular instance, V8's programmer could and probably should ha=
ve used a non-reserved name (for example "m_" would have been a b=
etter choice regardless). Even the choice of _Nullable was ill-conceived, s=
ince identifiers beginning with an underscore and an uppercase letter are a=
lso reserved.<br>=C2=A0<br></div><blockquote class=3D"gmail_quote" style=3D=
"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'm just saying it's known to be in use in a fairly major project. =
You know,<br>
the one that is behind Node.js and a whole ecosystem. The argument in the<b=
r>
paper that says it's little used is incorrect: it's not like pre-C+=
+11 "auto",<br>
which had exactly one use in the entire Microsoft source code.<br></blockqu=
ote><div><br></div><div>I said that it's little used in the two librari=
esI have checked (VS2015 and libc++). For user code such as this, all I sai=
d is that "the proposal should not break code", which is correct:=
the identifier __ should not have been used in the first place, so this is=
a case of code that someone might say "deserves to be broken".<b=
r>=C2=A0<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">
I guess we could convince GCC and Clang to print a warning about it if it<b=
r>
looks like this is going forward, so the V8 developers start fixing it. May=
be<br>
we'll get some of these fixed too:<br>
<br>
<a href=3D"http://lxr.free-electrons.com/source/include/linux/compiler.h#L1=
15" rel=3D"noreferrer" target=3D"_blank">http://lxr.free-electrons.com/<wbr=
>source/include/linux/compiler.<wbr>h#L115</a><br>
<a href=3D"http://lxr.free-electrons.com/source/include/asm-generic/fixmap.=
h#L73" rel=3D"noreferrer" target=3D"_blank">http://lxr.free-electrons.com/<=
wbr>source/include/asm-generic/<wbr>fixmap.h#L73</a></blockquote><div><br><=
/div><div>The first one, that #defines "if", is particularly dist=
urbing.<br><br></div><div>Cheers,<br><br></div><div>Alberto<br></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" 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/CAF3xnJRtyCRSqc5dh7fpf1pSQem_Lw4SbePQ=
xY3dBC_xEEisEg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAF3xnJRtyCRSqc5d=
h7fpf1pSQem_Lw4SbePQxY3dBC_xEEisEg%40mail.gmail.com</a>.<br />
--001a114e5364ba3ed3054bc6d233--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 11:23:55 +0200
Raw View
--001a114e5364e385ce054bc704b2
Content-Type: text/plain; charset=UTF-8
2017-03-28 11:08 GMT+02:00 Viacheslav Usov <via.usov@gmail.com>:
> On Tue, Mar 28, 2017 at 8:22 AM, Alberto Barbati <albertobarbati@gmail.com
> > wrote:
>
> > Thanks a lot for the pointer! Whoa! This issue is ancient... I'll make
> sure the next version will have a reference to it and address the concerns
> it raises.
>
> This keeps coming back to this forum. For example, this:
> https://groups.google.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/
> G8WC37LVAAAJ
>
> My take on this is that we should have an operator or a keyword that
> extends the lifetime of a temporary, as discussed here
> https://groups.google.com/a/isocpp.org/d/msg/std-
> proposals/ioi76TkG6g4/bdUinF-3AQAJ and subsequent posts, notably this
> https://groups.google.com/a/isocpp.org/d/msg/std-
> proposals/ioi76TkG6g4/bdUinF-3AQAJ and this https://groups.google.
> com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/5JrGmugAAgAJ
>
Thanks for taking the time to collect these links, I will have a look at
them.
As for having a keyword to extend the lifetime of a temporary, there is a
formal proposal for that (http://wg21.link/p0577), which I referenced in my
draft. However I believe P0577 does not address the issue of decomposition
declarations and has a greater syntactic cost (it re-uses the "register"
keyword). It's true that P0577 provides additional use cases, though, but I
am yet to be convinced of their usefulness.
Alberto
--
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/CAF3xnJSBMmyno-AksyJJz5W%3DK4J%3DuY-ynYys3%2Bv%3Dmf5EzCp07w%40mail.gmail.com.
--001a114e5364e385ce054bc704b2
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">2017=
-03-28 11:08 GMT+02:00 Viacheslav Usov <span dir=3D"ltr"><<a href=3D"mai=
lto:via.usov@gmail.com" target=3D"_blank">via.usov@gmail.com</a>></span>=
:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><di=
v class=3D"gmail_extra"><div class=3D"gmail_quote"><span class=3D"gmail-">O=
n Tue, Mar 28, 2017 at 8:22 AM, Alberto Barbati <span dir=3D"ltr"><<a hr=
ef=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">albertobarbati@gma=
il.com</a>></span> wrote:<br><div><br></div><div>> Thanks a lot for t=
he pointer! Whoa! This issue is ancient... I'll make sure the next vers=
ion will have a reference to it and address the concerns it raises.</div><d=
iv><br></div></span><div>This keeps coming back to this forum. For example,=
this:=C2=A0<a href=3D"https://groups.google.com/a/isocpp.org/d/msg/std-pro=
posals/ioi76TkG6g4/G8WC37LVAAAJ" target=3D"_blank">https://groups.google.<w=
br>com/a/isocpp.org/d/msg/std-<wbr>proposals/ioi76TkG6g4/<wbr>G8WC37LVAAAJ<=
/a></div><div><br></div><div>My take on this is that we should have an oper=
ator or a keyword that extends the lifetime of a temporary, as discussed he=
re <a href=3D"https://groups.google.com/a/isocpp.org/d/msg/std-proposals/io=
i76TkG6g4/bdUinF-3AQAJ" target=3D"_blank">https://groups.google.com/a/<wbr>=
isocpp.org/d/msg/std-<wbr>proposals/ioi76TkG6g4/bdUinF-<wbr>3AQAJ</a>=C2=A0=
and subsequent posts, notably this=C2=A0<a href=3D"https://groups.google.co=
m/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/bdUinF-3AQAJ" target=3D"_bla=
nk">https://groups.google.<wbr>com/a/isocpp.org/d/msg/std-<wbr>proposals/io=
i76TkG6g4/bdUinF-<wbr>3AQAJ</a> and this=C2=A0<a href=3D"https://groups.goo=
gle.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/5JrGmugAAgAJ" target=
=3D"_blank">https://groups.google.<wbr>com/a/isocpp.org/d/msg/std-<wbr>prop=
osals/ioi76TkG6g4/<wbr>5JrGmugAAgAJ</a></div></div></div></div></blockquote=
><div><br></div><div>Thanks for taking the time to collect these links, I w=
ill have a look at them.<br><br></div><div>As for having a keyword to exten=
d the lifetime of a temporary, there is a formal proposal for that (<a href=
=3D"http://wg21.link/p0577">http://wg21.link/p0577</a>), which I referenced=
in my draft. However I believe P0577 does not address the issue of decompo=
sition declarations and has a greater syntactic cost (it re-uses the "=
register" keyword). It's true that P0577 provides additional use c=
ases, though, but I am yet to be convinced of their usefulness.<br><br></di=
v><div>Alberto<br></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" 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/CAF3xnJSBMmyno-AksyJJz5W%3DK4J%3DuY-y=
nYys3%2Bv%3Dmf5EzCp07w%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoo=
ter">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAF3xnJSB=
Mmyno-AksyJJz5W%3DK4J%3DuY-ynYys3%2Bv%3Dmf5EzCp07w%40mail.gmail.com</a>.<br=
/>
--001a114e5364e385ce054bc704b2--
.
Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Tue, 28 Mar 2017 09:55:50 -0400
Raw View
On 2017-03-28 05:23, Alberto Barbati wrote:
> 2017-03-28 11:08 GMT+02:00 Viacheslav Usov <via.usov@gmail.com>:
>> This keeps coming back to this forum. For example, this:
>> https://groups.google.com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/
>> G8WC37LVAAAJ
>>
>> My take on this is that we should have an operator or a keyword that
>> extends the lifetime of a temporary, as discussed here
>> https://groups.google.com/a/isocpp.org/d/msg/std-
>> proposals/ioi76TkG6g4/bdUinF-3AQAJ and subsequent posts, notably this
>> https://groups.google.com/a/isocpp.org/d/msg/std-
>> proposals/ioi76TkG6g4/bdUinF-3AQAJ and this https://groups.google.
>> com/a/isocpp.org/d/msg/std-proposals/ioi76TkG6g4/5JrGmugAAgAJ
>
> Thanks for taking the time to collect these links, I will have a look at
> them.
>
> As for having a keyword to extend the lifetime of a temporary, there is a
> formal proposal for that (http://wg21.link/p0577), which I referenced in my
> draft. However I believe P0577 does not address the issue of decomposition
> declarations and has a greater syntactic cost (it re-uses the "register"
> keyword). It's true that P0577 provides additional use cases, though, but I
> am yet to be convinced of their usefulness.
The main use case for `register` as lifetime extension is that you can
use it like:
for (auto item : add_const(register make_list()))
....where you would otherwise need an additional declaration. The
decomposition case I think would be best solved by allowing empty and
nested declarations. See
https://groups.google.com/a/isocpp.org/d/msg/std-proposals/gg3_eUhCuqo/HcippDFiBgAJ
and following posts in the thread. This would let you write:
auto [] = get_lock(); // no name
auto [x, [], y] = get_tuple(); // middle element is unnamed
auto [x, [a, b], y] = get_tuple(); // nested decomposition
Both solve the simple case, but both also have additional but
non-overlapping usefulness. I'm inclined to think that both are useful.
--
Matthew
--
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/58DA6B66.2010307%40gmail.com.
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 09:16:37 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 02:09:54 PDT Alberto Barbati =
wrote:
> In this particular instance, V8's programmer could and probably should ha=
ve
> used a non-reserved name (for example "m_" would have been a better choic=
e
> regardless). Even the choice of _Nullable was ill-conceived, since
> identifiers beginning with an underscore and an uppercase letter are also
> reserved.
The reason for __ is that it looks unintrusive, which allows for code=20
generation in a way that is easy to read:
// Fetch the instance type of the receiver into result register.
__ movp(result, FieldOperand(string, HeapObject::kMapOffset));
__ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOffset));
// We need special handling for indirect strings.
Label check_sequential;
__ testb(result, Immediate(kIsIndirectStringMask));
__ j(zero, &check_sequential, Label::kNear);
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/2009881.g1rS942AcB%40tjmaciei-mobl1.
.
Author: Zhihao Yuan <zy@miator.net>
Date: Tue, 28 Mar 2017 11:27:34 -0500
Raw View
--f403045c31b0f377c1054bccef91
Content-Type: text/plain; charset=UTF-8
On Tue, Mar 28, 2017 at 4:23 AM, Alberto Barbati <albertobarbati@gmail.com>
wrote:
> However I believe P0577 does not address the issue of decomposition
> declaration
Because these two "use cases" imply different semantics.
When you write
auto __ = lock_guard(m);
here you mean to *preserve* the result object, but when
you write
auto [__, a] = get_tuple(...);
you mean to *ignore* a part of the result object, so
physically, just like std::ignore, I don't expect __ here
to issue a call to get(obj), nor an access to a subobject.
I don't think the *preserving* semantics can fulfill the
*ignoring* demand.
--
Zhihao Yuan, ID lichray
The best way to predict the future is to invent it.
___________________________________________________
--
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/CAGsORuC7LZWWtCnr9Zuoqc%3DzzQOeNT-KZimy6BNO%2Bu_h3in6cA%40mail.gmail.com.
--f403045c31b0f377c1054bccef91
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">=
On Tue, Mar 28, 2017 at 4:23 AM, Alberto Barbati <span dir=3D"ltr"><<a h=
ref=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">albertobarbati@gm=
ail.com</a>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D=
"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">However I b=
elieve P0577 does not address the issue of decomposition declaration </bloc=
kquote></div><br></div><div class=3D"gmail_extra">Because these two "u=
se cases" imply different semantics.<br></div><div class=3D"gmail_extr=
a">When you write<br><br></div><div class=3D"gmail_extra">=C2=A0 auto __ =
=3D lock_guard(m);<br><br></div><div class=3D"gmail_extra">here you mean to=
*preserve* the result object, but when<br>you write<br><br></div><div clas=
s=3D"gmail_extra">=C2=A0 auto [__, a] =3D get_tuple(...);<br><br></div><div=
class=3D"gmail_extra">you mean to *ignore* a part of the result object, so=
<br>physically, just like std::ignore, I don't expect __ here<br>to iss=
ue a call to get(obj), nor an access to a subobject.<br>I don't think t=
he *preserving* semantics can fulfill the<br>*ignoring* demand.<br></div><d=
iv class=3D"gmail_extra"><br>-- <br><div class=3D"gmail_signature" data-sma=
rtmail=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=3D"ltr"><div>Zhih=
ao Yuan, ID lichray<br>The best way to predict the future is to invent it.<=
br>___________________________________________________<br></div></div></div=
></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" 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/CAGsORuC7LZWWtCnr9Zuoqc%3DzzQOeNT-KZi=
my6BNO%2Bu_h3in6cA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAGsORuC7LZWW=
tCnr9Zuoqc%3DzzQOeNT-KZimy6BNO%2Bu_h3in6cA%40mail.gmail.com</a>.<br />
--f403045c31b0f377c1054bccef91--
.
Author: Brittany Friedman <fourthgeek@gmail.com>
Date: Tue, 28 Mar 2017 11:34:26 -0500
Raw View
--001a113d7eb483d313054bcd0857
Content-Type: text/plain; charset=UTF-8
On Mon, Mar 27, 2017 at 3:27 PM, Alberto Barbati <albertobarbati@gmail.com>
wrote:
> Hello,
>
> this is a draft for a proposal to add a special meaning to the identifier
> __ (double underscore) so that it can be used (even repeatedly in the same
> lexical scope) for all variables whose name is not important and that is no
> longer needed after declaration. The draft includes a few examples.
>
> Is there any interest in this?
>
> Thanks in advance,
>
> Alberto
>
> --
> 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/985b9b2a-c734-45eb-
> 95f4-db4dc0d309a1%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp.org?utm_medium=email&utm_source=footer>
> .
>
Instead of __, I'd propose using ?. For example auto ? = scope_guard{...}.
? isn't allowed in identifiers so it shouldn't conflict with existing
nonconformant code. ? is also shorter :)
--
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/CADbh%2BeSOtnM76_2-0kKo7U%2BDCK4Mt1uYaR1HfAzxcxXuvcv%2Bwg%40mail.gmail.com.
--001a113d7eb483d313054bcd0857
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">=
On Mon, Mar 27, 2017 at 3:27 PM, Alberto Barbati <span dir=3D"ltr"><<a h=
ref=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">albertobarbati@gm=
ail.com</a>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D=
"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-le=
ft:1ex"><div dir=3D"ltr">Hello,<br><br>this is a draft for a proposal to ad=
d a special meaning to the identifier __ (double underscore) so that it can=
be used (even repeatedly in the same lexical scope) for all variables whos=
e name is not important and that is no longer needed after declaration. The=
draft includes a few examples.<br><br>Is there any interest in this?<br><b=
r>Thanks in advance,<br><br>Alberto<span class=3D"gmail-HOEnZb"><font color=
=3D"#888888"><br><br></font></span></div><span class=3D"gmail-HOEnZb"><font=
color=3D"#888888">
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">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/985b9b2a-c734-45eb-95f4-db4dc0d309a1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/985b=
9b2a-c734-45eb-<wbr>95f4-db4dc0d309a1%40isocpp.org</a><wbr>.<br>
</font></span></blockquote></div></div><div class=3D"gmail_extra"><br></div=
><div class=3D"gmail_extra"><div><br></div><div><br></div><div>Instead of _=
_, I'd propose using ?. For example auto ? =3D scope_guard{...}. ? isn&=
#39;t allowed in identifiers so it shouldn't conflict with existing non=
conformant code. ? is also shorter :)</div><div><br></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CADbh%2BeSOtnM76_2-0kKo7U%2BDCK4Mt1uY=
aR1HfAzxcxXuvcv%2Bwg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoote=
r">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CADbh%2BeSO=
tnM76_2-0kKo7U%2BDCK4Mt1uYaR1HfAzxcxXuvcv%2Bwg%40mail.gmail.com</a>.<br />
--001a113d7eb483d313054bcd0857--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 09:43:20 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:27:34 PDT Zhihao Yuan wrot=
e:
> here you mean to *preserve* the result object, but when
> you write
>=20
> auto [__, a] =3D get_tuple(...);
>=20
> you mean to *ignore* a part of the result object, so
> physically, just like std::ignore, I don't expect __ here
> to issue a call to get(obj), nor an access to a subobject.
> I don't think the *preserving* semantics can fulfill the
> *ignoring* demand.
It has no difference, because the structured binding is actually a *binding=
*,=20
so there's difference to object creation or retention. The result from=20
get_tuple is assigned to an anonymous object and all its members are retain=
ed.=20
Then it's decomposed into two elements: an anonymous one (can't be accessed=
)=20
and a.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/14211602.1P4LjlnQMh%40tjmaciei-mobl1.
.
Author: Zhihao Yuan <zy@miator.net>
Date: Tue, 28 Mar 2017 11:53:51 -0500
Raw View
--94eb2c1aaab8f7e8d1054bcd4d1c
Content-Type: text/plain; charset=UTF-8
On Tue, Mar 28, 2017 at 11:43 AM, Thiago Macieira <thiago@macieira.org>
wrote:
> just like std::ignore, I don't expect __ here
> > to issue a call to get(obj), nor an access to a subobject.
> > I don't think the *preserving* semantics can fulfill the
> > *ignoring* demand.
>
> It has no difference, because the structured binding is actually a
> *binding*,
> so there's difference to object creation or retention. The result from
> get_tuple is assigned to an anonymous object and all its members are
> retained.
> Then it's decomposed into two elements: an anonymous one (can't be
> accessed)
> and a.
>
Whether a call to get<0>(anon) being made
certainly has difference, because it can have
observable effect. And, just like I showed
in a previous discussion, the purpose of the
anonymous object is for decomposition. If
nothing is decomposition it, it needs not to be
created, therefore
auto [__, __] = get_tuple(...);
should be physically equivalent to
get_tuple(...);
thus, the result object is dropped on the floor.
--
Zhihao Yuan, ID lichray
The best way to predict the future is to invent it.
___________________________________________________
--
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/CAGsORuBepjjTQxa0w%2B9Z_v%2Birrc6QwxqmUv98dTRarUCVHHY%2BA%40mail.gmail.com.
--94eb2c1aaab8f7e8d1054bcd4d1c
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">=
On Tue, Mar 28, 2017 at 11:43 AM, Thiago Macieira <span dir=3D"ltr"><<a =
href=3D"mailto:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</=
a>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0=
0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D"">jus=
t like std::ignore, I don't expect __ here<br>
> to issue a call to get(obj), nor an access to a subobject.<br>
> I don't think the *preserving* semantics can fulfill the<br>
> *ignoring* demand.<br>
<br>
</span>It has no difference, because the structured binding is actually a *=
binding*,<br>
so there's difference to object creation or retention. The result from<=
br>
get_tuple is assigned to an anonymous object and all its members are retain=
ed.<br>
Then it's decomposed into two elements: an anonymous one (can't be =
accessed)<br>
and a.<br>
<span class=3D""></span></blockquote></div><br></div><div class=3D"gmail_ex=
tra">Whether a call to get<0>(anon) being made<br>certainly has diffe=
rence, because it can have<br>observable effect.=C2=A0 And, just like I sho=
wed<br></div><div class=3D"gmail_extra">in a previous discussion, the purpo=
se of the<br>anonymous object is for decomposition.=C2=A0 If<br>nothing is =
decomposition it, it needs not to be<br>created, therefore<br><br></div><di=
v class=3D"gmail_extra">=C2=A0 auto [__, __] =3D get_tuple(...);<br><br></d=
iv><div class=3D"gmail_extra">should be physically equivalent to<br><br></d=
iv><div class=3D"gmail_extra">=C2=A0 get_tuple(...);<br><br></div><div clas=
s=3D"gmail_extra">thus, the result object is dropped on the floor.<br clear=
=3D"all"></div><div class=3D"gmail_extra"><br>-- <br><div class=3D"gmail_si=
gnature" data-smartmail=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=
=3D"ltr"><div>Zhihao Yuan, ID lichray<br>The best way to predict the future=
is to invent it.<br>___________________________________________________<br=
></div></div></div></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" 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/CAGsORuBepjjTQxa0w%2B9Z_v%2Birrc6Qwxq=
mUv98dTRarUCVHHY%2BA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoote=
r">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAGsORuBepj=
jTQxa0w%2B9Z_v%2Birrc6QwxqmUv98dTRarUCVHHY%2BA%40mail.gmail.com</a>.<br />
--94eb2c1aaab8f7e8d1054bcd4d1c--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 10:03:38 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao Yuan wrot=
e:
> auto [__, __] =3D get_tuple(...);
>=20
> should be physically equivalent to
>=20
> get_tuple(...);
>=20
> thus, the result object is dropped on the floor.
This should be equivalent to:
auto __ =3D get_tuple(...);
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/8028901.3vRB6vfJZY%40tjmaciei-mobl1.
.
Author: Viacheslav Usov <via.usov@gmail.com>
Date: Tue, 28 Mar 2017 19:14:49 +0200
Raw View
--001a113f49e8f0f566054bcd9870
Content-Type: text/plain; charset=UTF-8
On Tue, Mar 28, 2017 at 7:03 PM, Thiago Macieira <thiago@macieira.org>
wrote:
> This should be equivalent to:
> auto __ = get_tuple(...);
Which it is, if auto __ means either "DO retain the object" or "do NOT
retain the object"
Cheers,
V.
--
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/CAA7YVg3jV_E0mUG77KZ9BLvoS6%2BGktWTQ3RofMaEgE9uaUbG-A%40mail.gmail.com.
--001a113f49e8f0f566054bcd9870
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
ue, Mar 28, 2017 at 7:03 PM, Thiago Macieira <span dir=3D"ltr"><<a href=
=3D"mailto:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</a>&g=
t;</span> wrote:<br><div><br></div><div>> This should be equivalent to:<=
/div><div><br></div><div>> =C2=A0 =C2=A0 =C2=A0 =C2=A0auto __ =3D get_tu=
ple(...);</div><div><br></div><div>Which it is, if auto __ means either &qu=
ot;DO retain the object" or "do NOT retain the object"=C2=A0=
</div><div><br></div><div>Cheers,</div><div>V.</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" 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/CAA7YVg3jV_E0mUG77KZ9BLvoS6%2BGktWTQ3=
RofMaEgE9uaUbG-A%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAA7YVg3jV_E0mU=
G77KZ9BLvoS6%2BGktWTQ3RofMaEgE9uaUbG-A%40mail.gmail.com</a>.<br />
--001a113f49e8f0f566054bcd9870--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Tue, 28 Mar 2017 10:18:42 -0700 (PDT)
Raw View
------=_Part_14103_1962243281.1490721522457
Content-Type: multipart/alternative;
boundary="----=_Part_14104_1650800070.1490721522457"
------=_Part_14104_1650800070.1490721522457
Content-Type: text/plain; charset=UTF-8
On Tuesday, March 28, 2017 at 12:53:55 PM UTC-4, Zhihao Yuan wrote:
>
>
> On Tue, Mar 28, 2017 at 11:43 AM, Thiago Macieira <thi...@macieira.org
> <javascript:>> wrote:
>
>> just like std::ignore, I don't expect __ here
>> > to issue a call to get(obj), nor an access to a subobject.
>> > I don't think the *preserving* semantics can fulfill the
>> > *ignoring* demand.
>>
>> It has no difference, because the structured binding is actually a
>> *binding*,
>> so there's difference to object creation or retention. The result from
>> get_tuple is assigned to an anonymous object and all its members are
>> retained.
>> Then it's decomposed into two elements: an anonymous one (can't be
>> accessed)
>> and a.
>>
>
> Whether a call to get<0>(anon) being made
> certainly has difference, because it can have
> observable effect. And, just like I showed
> in a previous discussion, the purpose of the
> anonymous object is for decomposition. If
> nothing is decomposition it, it needs not to be
> created, therefore
>
> auto [__, __] = get_tuple(...);
>
> should be physically equivalent to
>
> get_tuple(...);
>
> thus, the result object is dropped on the floor.
>
No, it should not. It should create a hidden variable, initialize it with
the return value of the expression, then extract nothing from it. The
hidden variable will *always* be destroyed at the end of scope.
The behavior of `auto [name, __]` should not be substantially different
from that of `auto [__, __]`. What you're saying would violate that.
--
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/20a47769-a0c4-4f14-97a7-7b506c2dba8e%40isocpp.org.
------=_Part_14104_1650800070.1490721522457
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Tuesday, March 28, 2017 at 12:53:55 PM UTC-4, Z=
hihao Yuan wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margi=
n-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"l=
tr"><div><br><div class=3D"gmail_quote">On Tue, Mar 28, 2017 at 11:43 AM, T=
hiago Macieira <span dir=3D"ltr"><<a href=3D"javascript:" target=3D"_bla=
nk" gdf-obfuscated-mailto=3D"yl9ZbfXDBwAJ" rel=3D"nofollow" onmousedown=3D"=
this.href=3D'javascript:';return true;" onclick=3D"this.href=3D'=
;javascript:';return true;">thi...@macieira.org</a>></span> wrote:<b=
r><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:=
1px #ccc solid;padding-left:1ex"><span>just like std::ignore, I don't e=
xpect __ here<br>
> to issue a call to get(obj), nor an access to a subobject.<br>
> I don't think the *preserving* semantics can fulfill the<br>
> *ignoring* demand.<br>
<br>
</span>It has no difference, because the structured binding is actually a *=
binding*,<br>
so there's difference to object creation or retention. The result from<=
br>
get_tuple is assigned to an anonymous object and all its members are retain=
ed.<br>
Then it's decomposed into two elements: an anonymous one (can't be =
accessed)<br>
and a.<br>
<span></span></blockquote></div><br></div><div>Whether a call to get<0&g=
t;(anon) being made<br>certainly has difference, because it can have<br>obs=
ervable effect.=C2=A0 And, just like I showed<br></div><div>in a previous d=
iscussion, the purpose of the<br>anonymous object is for decomposition.=C2=
=A0 If<br>nothing is decomposition it, it needs not to be<br>created, there=
fore<br><br></div><div>=C2=A0 auto [__, __] =3D get_tuple(...);<br><br></di=
v><div>should be physically equivalent to<br><br></div><div>=C2=A0 get_tupl=
e(...);<br><br></div><div>thus, the result object is dropped on the floor.<=
br clear=3D"all"></div></div></blockquote><div><br>No, it should not. It sh=
ould create a hidden variable, initialize it with the return value of the e=
xpression, then extract nothing from it. The hidden variable will <i>always=
</i> be destroyed at the end of scope.<br><br>The behavior of `auto [name, =
__]` should not be substantially different from that of `auto [__, __]`. Wh=
at you're saying would violate that.<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/20a47769-a0c4-4f14-97a7-7b506c2dba8e%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/20a47769-a0c4-4f14-97a7-7b506c2dba8e=
%40isocpp.org</a>.<br />
------=_Part_14104_1650800070.1490721522457--
------=_Part_14103_1962243281.1490721522457--
.
Author: "'Matt Calabrese' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Date: Tue, 28 Mar 2017 13:21:44 -0400
Raw View
--94eb2c09351ab3efb7054bcdb14e
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Tue, Mar 28, 2017 at 1:39 AM, Thiago Macieira <thiago@macieira.org>
wrote:
> On segunda-feira, 27 de mar=C3=A7o de 2017 15:16:58 PDT 'Jeffrey Yasskin'=
via
> ISO C
> ++ Standard - Future Proposals wrote:
> > > Just remember that there are already existing codebases using __ as
> > > identifier
> > > or macro names.
> >
> > They're not allowed. "_" is ok outside of the global namespace, but "__=
"
> is
> > reserved by [lex.name].
>
> I know it is.
>
> And yet it's in use.
> https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33
If we are afraid to break people who use explicitly reserved identifiers,
then I think we'd be making a huge mistake. I agree that we should always
minimize breaking people when it makes sense and I know that people draw
the line at different places, but we should at least be able to make use of
an identifier that has been reserved since the initial standard.
--=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/CANh8DEkdFOYRNoKEDUPxdO-wMaG_CHeFbkou_27NiR9ZxvM=
wwA%40mail.gmail.com.
--94eb2c09351ab3efb7054bcdb14e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
ue, Mar 28, 2017 at 1:39 AM, Thiago Macieira <span dir=3D"ltr"><<a href=
=3D"mailto:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</a>&g=
t;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0=
.8ex;border-left:1px #ccc solid;padding-left:1ex">On segunda-feira, 27 de =
mar=C3=A7o de 2017 15:16:58 PDT 'Jeffrey Yasskin' via ISO C<br>
<span class=3D"">++ Standard - Future Proposals wrote:<br>
> > Just remember that there are already existing codebases using __ =
as<br>
> > identifier<br>
> > or macro names.<br>
><br>
> They're not allowed. "_" is ok outside of the global nam=
espace, but "__" is<br>
> reserved by [<a href=3D"http://lex.name" rel=3D"noreferrer" target=3D"=
_blank">lex.name</a>].<br>
<br>
</span>I know it is.<br>
<br>
And yet it's in use.<br>
<a href=3D"https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33"=
rel=3D"noreferrer" target=3D"_blank">https://github.com/v8/v8/blob/<wbr>ma=
ster/src/x64/codegen-x64.cc#<wbr>L33</a></blockquote><div><br></div><div>If=
we are afraid to break people who use explicitly reserved identifiers, the=
n I think we'd be making a huge mistake. I agree that we should always =
minimize breaking people when it makes sense and I know that people draw th=
e line at different places, but we should at least be able to make use of a=
n identifier that has been reserved since the initial standard.</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" 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/CANh8DEkdFOYRNoKEDUPxdO-wMaG_CHeFbkou=
_27NiR9ZxvMwwA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CANh8DEkdFOYRNoKE=
DUPxdO-wMaG_CHeFbkou_27NiR9ZxvMwwA%40mail.gmail.com</a>.<br />
--94eb2c09351ab3efb7054bcdb14e--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 10:29:40 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 10:14:49 PDT Viacheslav Usov =
wrote:
> On Tue, Mar 28, 2017 at 7:03 PM, Thiago Macieira <thiago@macieira.org>
>=20
> wrote:
> > This should be equivalent to:
> > auto __ =3D get_tuple(...);
>=20
> Which it is, if auto __ means either "DO retain the object" or "do NOT
> retain the object"
As proposed by the OP: exactly as that declaration would do today, except t=
hat=20
you can't access it anymore.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/22600974.uQoRWN8BZc%40tjmaciei-mobl1.
.
Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Tue, 28 Mar 2017 13:29:52 -0400
Raw View
On 2017-03-28 13:03, Thiago Macieira wrote:
> On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao Yuan wr=
ote:
>> auto [__, __] =3D get_tuple(...);
>>
>> should be physically equivalent to
>>
>> get_tuple(...);
>>
>> thus, the result object is dropped on the floor.
>=20
> This should be equivalent to:
>=20
> auto __ =3D get_tuple(...);
I would argue it should be equivalent to:
auto __magic__ =3D get_tuple(...); // note: same as today
auto __ =3D get<0>(__magic__);
auto __ =3D get<1>(__magic__);
....so that in case of side effects, there is no observable behavior
difference. (The compiler is free to elide bits of the above if there
are provably no side effects.)
This almost makes me think we need "unnamed" and "ignored" to be
implemented separately :'(...
--=20
Matthew
--=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/58DA9D90.6020207%40gmail.com.
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Tue, 28 Mar 2017 10:31:27 -0700 (PDT)
Raw View
------=_Part_11498_123145833.1490722287676
Content-Type: multipart/alternative;
boundary="----=_Part_11499_695470842.1490722287676"
------=_Part_11499_695470842.1490722287676
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Tuesday, March 28, 2017 at 1:21:46 PM UTC-4, Matt Calabrese wrote:
>
> On Tue, Mar 28, 2017 at 1:39 AM, Thiago Macieira <thi...@macieira.org=20
> <javascript:>> wrote:
>
>> On segunda-feira, 27 de mar=C3=A7o de 2017 15:16:58 PDT 'Jeffrey Yasskin=
' via=20
>> ISO C
>> ++ Standard - Future Proposals wrote:
>> > > Just remember that there are already existing codebases using __ as
>> > > identifier
>> > > or macro names.
>> >
>> > They're not allowed. "_" is ok outside of the global namespace, but=20
>> "__" is
>> > reserved by [lex.name].
>>
>> I know it is.
>>
>> And yet it's in use.
>> https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33
>
>
> If we are afraid to break people who use explicitly reserved identifiers,=
=20
> then I think we'd be making a huge mistake. I agree that we should always=
=20
> minimize breaking people when it makes sense and I know that people draw=
=20
> the line at different places, but we should at least be able to make use =
of=20
> an identifier that has been reserved since the initial standard.
>
I have to agree with that. This is literally the *whole point* of reserving=
=20
identifiers: so that we can use them later. It's not like adding a keyword,=
=20
where we need to study the impact of making a change so as to minimize=20
breakage.
If someone was using a reserved identifier (outside of a standard library=
=20
implementation), their code is wrong. We told them to stay out of this=20
area, and they didn't. Their code breaking is not our fault, nor is it on=
=20
us to stay out of their way.
Now, one thing that's important in this regard is that we should do a study=
=20
on the impact of this change on standard library implementations. Since we=
=20
would obviously be taking away one of their identifiers.
--=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/94be2101-d81a-4ea2-bc78-cddc33cad37e%40isocpp.or=
g.
------=_Part_11499_695470842.1490722287676
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Tuesday, March 28, 2017 at 1:21:46 PM UTC-4, Matt Calab=
rese wrote:<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"><d=
iv><div class=3D"gmail_quote">On Tue, Mar 28, 2017 at 1:39 AM, Thiago Macie=
ira <span dir=3D"ltr"><<a href=3D"javascript:" target=3D"_blank" gdf-obf=
uscated-mailto=3D"yhP7iXrFBwAJ" rel=3D"nofollow" onmousedown=3D"this.href=
=3D'javascript:';return true;" onclick=3D"this.href=3D'javascri=
pt:';return true;">thi...@macieira.org</a>></span> wrote:<br><blockq=
uote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc =
solid;padding-left:1ex">On segunda-feira, 27 de mar=C3=A7o de 2017 15:16:58=
PDT 'Jeffrey Yasskin' via ISO C<br>
<span>++ Standard - Future Proposals wrote:<br>
> > Just remember that there are already existing codebases using __ =
as<br>
> > identifier<br>
> > or macro names.<br>
><br>
> They're not allowed. "_" is ok outside of the global nam=
espace, but "__" is<br>
> reserved by [<a href=3D"http://lex.name" rel=3D"nofollow" target=3D"_b=
lank" onmousedown=3D"this.href=3D'http://www.google.com/url?q\x3dhttp%3=
A%2F%2Flex.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNF_N3GW5zE1_7z8yWi02=
O4mJS2isg';return true;" onclick=3D"this.href=3D'http://www.google.=
com/url?q\x3dhttp%3A%2F%2Flex.name\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCN=
F_N3GW5zE1_7z8yWi02O4mJS2isg';return true;">lex.name</a>].<br>
<br>
</span>I know it is.<br>
<br>
And yet it's in use.<br>
<a href=3D"https://github.com/v8/v8/blob/master/src/x64/codegen-x64.cc#L33"=
rel=3D"nofollow" target=3D"_blank" onmousedown=3D"this.href=3D'https:/=
/www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Fv8%2Fv8%2Fblob%2Fmaster=
%2Fsrc%2Fx64%2Fcodegen-x64.cc%23L33\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjC=
NESmh4YdwRnNE1XxVxfhxmYsNRYPw';return true;" onclick=3D"this.href=3D=
9;https://www.google.com/url?q\x3dhttps%3A%2F%2Fgithub.com%2Fv8%2Fv8%2Fblob=
%2Fmaster%2Fsrc%2Fx64%2Fcodegen-x64.cc%23L33\x26sa\x3dD\x26sntz\x3d1\x26usg=
\x3dAFQjCNESmh4YdwRnNE1XxVxfhxmYsNRYPw';return true;">https://github.co=
m/v8/v8/blob/<wbr>master/src/x64/codegen-x64.cc#<wbr>L33</a></blockquote><d=
iv><br></div><div>If we are afraid to break people who use explicitly reser=
ved identifiers, then I think we'd be making a huge mistake. I agree th=
at we should always minimize breaking people when it makes sense and I know=
that people draw the line at different places, but we should at least be a=
ble to make use of an identifier that has been reserved since the initial s=
tandard.</div></div></div></div></blockquote><div><br>I have to agree with =
that. This is literally the <i>whole point</i> of reserving identifiers: so=
that we can use them later. It's not like adding a keyword, where we n=
eed to study the impact of making a change so as to minimize breakage.<br><=
br>If someone was using a reserved identifier (outside of a standard librar=
y implementation), their code is wrong. We told them to stay out of this ar=
ea, and they didn't. Their code breaking is not our fault, nor is it on=
us to stay out of their way.<br><br>Now, one thing that's important in=
this regard is that we should do a study on the impact of this change on s=
tandard library implementations. Since we would obviously be taking away on=
e of their identifiers.<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/94be2101-d81a-4ea2-bc78-cddc33cad37e%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/94be2101-d81a-4ea2-bc78-cddc33cad37e=
%40isocpp.org</a>.<br />
------=_Part_11499_695470842.1490722287676--
------=_Part_11498_123145833.1490722287676--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Tue, 28 Mar 2017 10:39:12 -0700 (PDT)
Raw View
------=_Part_11728_844605381.1490722752778
Content-Type: multipart/alternative;
boundary="----=_Part_11729_185140298.1490722752778"
------=_Part_11729_185140298.1490722752778
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Tuesday, March 28, 2017 at 1:29:57 PM UTC-4, Matthew Woehlke wrote:
>
> On 2017-03-28 13:03, Thiago Macieira wrote:=20
> > On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao Yuan =
wrote:=20
> >> auto [__, __] =3D get_tuple(...);=20
> >>=20
> >> should be physically equivalent to=20
> >>=20
> >> get_tuple(...);=20
> >>=20
> >> thus, the result object is dropped on the floor.=20
> >=20
> > This should be equivalent to:=20
> >=20
> > auto __ =3D get_tuple(...);=20
>
> I would argue it should be equivalent to:=20
>
> auto __magic__ =3D get_tuple(...); // note: same as today=20
> auto __ =3D get<0>(__magic__);=20
> auto __ =3D get<1>(__magic__);=20
>
> ...so that in case of side effects, there is no observable behavior=20
> difference. (The compiler is free to elide bits of the above if there=20
> are provably no side effects.)=20
>
> This almost makes me think we need "unnamed" and "ignored" to be=20
> implemented separately :'(...
>
The question is this: will people actually want side effects of ignored=20
parameters? Or more to the point, why exactly would you want those side=20
effects?
I can't think of a case of a type that is decomposable where the=20
decomposition `get` function has side effects. Well, with one exception:=20
variant types. And the side effect there is that you get a thrown exception=
..
So it seems to me that if I have a variant, and I do:
auto [__, name] =3D expr;
I clearly don't want the side effect of calling `get<0>`. I'm declaring=20
very clearly that this variant is in state 1, and if it isn't, then throw.
So under what circumstances would a user want the side effect of `get` but=
=20
not the name? We shouldn't add such a feature based on whether someone=20
could use it. We should add the feature because someone has a genuine need=
=20
to use it.
--=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/57461565-aaec-44d2-becd-9abd76ebeb76%40isocpp.or=
g.
------=_Part_11729_185140298.1490722752778
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Tuesday, March 28, 2017 at 1:29:57 PM UTC-4, Matthew Wo=
ehlke wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-lef=
t: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On 2017-03-28 13:0=
3, Thiago Macieira wrote:
<br>> On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao =
Yuan wrote:
<br>>> =C2=A0 auto [__, __] =3D get_tuple(...);
<br>>>
<br>>> should be physically equivalent to
<br>>>
<br>>> =C2=A0 get_tuple(...);
<br>>>
<br>>> thus, the result object is dropped on the floor.
<br>>=20
<br>> This should be equivalent to:
<br>>=20
<br>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0auto __ =3D get_tu=
ple(...);
<br>
<br>I would argue it should be equivalent to:
<br>
<br>=C2=A0 auto __magic__ =3D get_tuple(...); // note: same as today
<br>=C2=A0 auto __ =3D get<0>(__magic__);
<br>=C2=A0 auto __ =3D get<1>(__magic__);
<br>
<br>...so that in case of side effects, there is no observable behavior
<br>difference. (The compiler is free to elide bits of the above if there
<br>are provably no side effects.)
<br>
<br>This almost makes me think we need "unnamed" and "ignore=
d" to be
<br>implemented separately :'(...<br></blockquote><div><br>The question=
is this: will people actually want side effects of ignored parameters? Or =
more to the point, why exactly would you want those side effects?<br><br>I =
can't think of a case of a type that is decomposable where the decompos=
ition `get` function has side effects. Well, with one exception: variant ty=
pes. And the side effect there is that you get a thrown exception.<br><br>S=
o it seems to me that if I have a variant, and I do:<br><br><div style=3D"b=
ackground-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); bord=
er-style: solid; border-width: 1px; overflow-wrap: break-word;" class=3D"pr=
ettyprint"><code class=3D"prettyprint"><div class=3D"subprettyprint"><span =
style=3D"color: #008;" class=3D"styled-by-prettify">auto</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify">[</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify">__</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">,</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"> name</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">]</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> <=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> expr</span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"><br></span></div></code></div><b=
r>I clearly don't want the side effect of calling `get<0>`. I'=
;m declaring very clearly that this variant is in state 1, and if it isn=
9;t, then throw.<br><br>So under what circumstances would a user want the s=
ide effect of `get` but not the name? We shouldn't add such a feature b=
ased on whether someone could use it. We should add the feature because som=
eone has a genuine need to use it.<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/57461565-aaec-44d2-becd-9abd76ebeb76%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/57461565-aaec-44d2-becd-9abd76ebeb76=
%40isocpp.org</a>.<br />
------=_Part_11729_185140298.1490722752778--
------=_Part_11728_844605381.1490722752778--
.
Author: Viacheslav Usov <via.usov@gmail.com>
Date: Tue, 28 Mar 2017 19:41:31 +0200
Raw View
--94eb2c070e9881891c054bcdf872
Content-Type: text/plain; charset=UTF-8
On Tue, Mar 28, 2017 at 7:29 PM, Thiago Macieira <thiago@macieira.org>
wrote:
> As proposed by the OP: exactly as that declaration would do today
Which is UB.
Cheers,
V.
--
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/CAA7YVg2peWL4yAEw_Y5%2BTCwD2SW0nXMcSEqbuLxgw8ikeRUmHg%40mail.gmail.com.
--94eb2c070e9881891c054bcdf872
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
ue, Mar 28, 2017 at 7:29 PM, Thiago Macieira <span dir=3D"ltr"><<a href=
=3D"mailto:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</a>&g=
t;</span> wrote:<br><div><br></div><div>> As proposed by the OP: exactly=
as that declaration would do today</div><div><br></div><div>Which is UB.</=
div><div><br></div><div>Cheers,</div><div>V.</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" 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/CAA7YVg2peWL4yAEw_Y5%2BTCwD2SW0nXMcSE=
qbuLxgw8ikeRUmHg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAA7YVg2peWL4yA=
Ew_Y5%2BTCwD2SW0nXMcSEqbuLxgw8ikeRUmHg%40mail.gmail.com</a>.<br />
--94eb2c070e9881891c054bcdf872--
.
Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Tue, 28 Mar 2017 13:51:34 -0400
Raw View
On 2017-03-28 13:39, Nicol Bolas wrote:
> On Tuesday, March 28, 2017 at 1:29:57 PM UTC-4, Matthew Woehlke wrote:
>> On 2017-03-28 13:03, Thiago Macieira wrote:=20
>>> On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao Yuan =
wrote:=20
>>>> auto [__, __] =3D get_tuple(...);=20
>>>>
>>>> should be physically equivalent to=20
>>>>
>>>> get_tuple(...);=20
>>>>
>>>> thus, the result object is dropped on the floor.=20
>>>
>>> This should be equivalent to:=20
>>>
>>> auto __ =3D get_tuple(...);=20
>>
>> I would argue it should be equivalent to:=20
>>
>> auto __magic__ =3D get_tuple(...); // note: same as today=20
>> auto __ =3D get<0>(__magic__);=20
>> auto __ =3D get<1>(__magic__);=20
>=20
> The question is this: will people actually want side effects of ignored=
=20
> parameters? Or more to the point, why exactly would you want those side=
=20
> effects?
Consistency?
// Same? Uh... no?
auto __ =3D expr;
auto [__] =3D expr;
// Same? I hope so?
auto [__] =3D expr;
auto x =3D expr; auto __ =3D get<0>(x);
// Same? Better be!
auto [y] =3D expr;
auto x =3D expr; auto y =3D get<0>(x);
--=20
Matthew
--=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/58DAA2A6.70508%40gmail.com.
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 10:52:17 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao Yuan wrot=
e:
> Whether a call to get<0>(anon) being made
> certainly has difference, because it can have
> observable effect.
It does not, so it cannot have an observable effect.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/2235919.4GAIbDEcRC%40tjmaciei-mobl1.
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 10:54:00 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 10:31:27 PDT Nicol Bolas wrot=
e:
> If someone was using a reserved identifier (outside of a standard library
> implementation), their code is wrong. We told them to stay out of this
> area, and they didn't. Their code breaking is not our fault, nor is it on
> us to stay out of their way.
>=20
> Now, one thing that's important in this regard is that we should do a stu=
dy
> on the impact of this change on standard library implementations. Since w=
e
> would obviously be taking away one of their identifiers.
I'm not saying we should avoid __.
I'm saying that the paper needs to be updated to indicate that the reserved=
=20
identifier is used and therefore we know we will cause breakage, regardless=
of=20
who is to blame.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/3233980.0m8BNaQOPU%40tjmaciei-mobl1.
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 22:27:25 +0200
Raw View
--Apple-Mail-2CB7CB11-9E5B-403F-9DB0-F22FDC2D99D2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
> Il giorno 28 mar 2017, alle ore 18:16, Thiago Macieira <thiago@macieira.o=
rg> ha scritto:
>=20
>> On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 02:09:54 PDT Alberto Barba=
ti wrote:
>> In this particular instance, V8's programmer could and probably should h=
ave
>> used a non-reserved name (for example "m_" would have been a better choi=
ce
>> regardless). Even the choice of _Nullable was ill-conceived, since
>> identifiers beginning with an underscore and an uppercase letter are als=
o
>> reserved.
>=20
> The reason for __ is that it looks unintrusive, which allows for code=20
> generation in a way that is easy to read:
>=20
> // Fetch the instance type of the receiver into result register.
> __ movp(result, FieldOperand(string, HeapObject::kMapOffset));
> __ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOffset));
I don't see it much easier to read than:
m_ movp(result, FieldOperand(string, HeapObject::kMapOffset));
m_ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOffset));
especially when the macro m_ expands to some variation of "masm". Just my o=
pinion.
A.
--=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/A84B1DA8-959F-41CF-AAFE-52F7C56D8056%40gmail.com=
..
--Apple-Mail-2CB7CB11-9E5B-403F-9DB0-F22FDC2D99D2
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></div><div><br></div><div>Il giorn=
o 28 mar 2017, alle ore 18:16, Thiago Macieira <<a href=3D"mailto:thiago=
@macieira.org">thiago@macieira.org</a>> ha scritto:<br><br></div><blockq=
uote type=3D"cite"><div><span>On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017=
02:09:54 PDT Alberto Barbati wrote:</span><br><blockquote type=3D"cite"><s=
pan>In this particular instance, V8's programmer could and probably should =
have</span><br></blockquote><blockquote type=3D"cite"><span>used a non-rese=
rved name (for example "m_" would have been a better choice</span><br></blo=
ckquote><blockquote type=3D"cite"><span>regardless). Even the choice of _Nu=
llable was ill-conceived, since</span><br></blockquote><blockquote type=3D"=
cite"><span>identifiers beginning with an underscore and an uppercase lette=
r are also</span><br></blockquote><blockquote type=3D"cite"><span>reserved.=
</span><br></blockquote><span></span><br><span>The reason for __ is that it=
looks unintrusive, which allows for code </span><br><span>generation in a =
way that is easy to read:</span><br><span></span><br><span> // Fetch =
the instance type of the receiver into result register.</span><br><span> &n=
bsp;__ movp(result, FieldOperand(string, HeapObject::kMapOffset));</span><b=
r><span> __ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOf=
fset));</span><br></div></blockquote><div><br></div>I don't see it much eas=
ier to read than:<div><span style=3D"background-color: rgba(255, 255, 255, =
0);"><br></span></div><div><span style=3D"background-color: rgba(255, 255, =
255, 0);"> m_ movp(result, FieldOperand(string, HeapObject::kM=
apOffset));</span></div><div><div><font color=3D"#000000"><span style=3D"ba=
ckground-color: rgba(255, 255, 255, 0);"> m_ movzxbl(result, F=
ieldOperand(result, Map::kInstanceTypeOffset));</span></font></div><div><fo=
nt color=3D"#000000"><span style=3D"background-color: rgba(255, 255, 255, 0=
);"><br></span></font></div><div><font color=3D"#000000"><span style=3D"bac=
kground-color: rgba(255, 255, 255, 0);">especially when the macro m_ expand=
s to some variation of "masm". Just my opinion.</span></font></div><div><fo=
nt color=3D"#000000"><span style=3D"background-color: rgba(255, 255, 255, 0=
);"><br></span></font></div><div><font color=3D"#000000"><span style=3D"bac=
kground-color: rgba(255, 255, 255, 0);">A.</span></font></div><blockquote t=
ype=3D"cite"><div><span></span></div></blockquote></div></body></html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/A84B1DA8-959F-41CF-AAFE-52F7C56D8056%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/A84B1DA8-959F-41CF-AAFE-52F7C56D8056%=
40gmail.com</a>.<br />
--Apple-Mail-2CB7CB11-9E5B-403F-9DB0-F22FDC2D99D2--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 22:45:44 +0200
Raw View
--Apple-Mail-C26B9FEB-DB10-4E8C-AD9D-43F1F8FBE10B
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
> Il giorno 28 mar 2017, alle ore 18:27, Zhihao Yuan <zy@miator.net> ha scr=
itto:
>=20
>=20
>> On Tue, Mar 28, 2017 at 4:23 AM, Alberto Barbati <albertobarbati@gmail.c=
om> wrote:
>> However I believe P0577 does not address the issue of decomposition decl=
aration
>=20
> Because these two "use cases" imply different semantics.
> When you write
>=20
> auto __ =3D lock_guard(m);
>=20
> here you mean to *preserve* the result object, but when
> you write
>=20
> auto [__, a] =3D get_tuple(...);
>=20
> you mean to *ignore* a part of the result object, so
> physically, just like std::ignore, I don't expect __ here
> to issue a call to get(obj), nor an access to a subobject.
> I don't think the *preserving* semantics can fulfill the
> *ignoring* demand.
I see it differently. For me, those two are instances of the same use case:=
"I don't care about the name, since I don't need to refer to this lvalue a=
nymore". In the first case we are not actually "preserving" anything, since=
we are declaring an object whose lifetime would end at the end of the lexi=
cal scope regardless of its name. Similarly in the second case, with the on=
ly difference that the name would be bound to a reference to a subobject of=
an object whose scope is defined irrespective of the binding. In this case=
the compiler can and probably would omit the binding without observable ef=
fects.
Cheers,
Alberto
--=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/81CE0C5F-21B4-46FC-9893-82C65001454C%40gmail.com=
..
--Apple-Mail-C26B9FEB-DB10-4E8C-AD9D-43F1F8FBE10B
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></div><div><br></div><div>Il giorn=
o 28 mar 2017, alle ore 18:27, Zhihao Yuan <<a href=3D"mailto:zy@miator.=
net">zy@miator.net</a>> ha scritto:<br><br></div><blockquote type=3D"cit=
e"><div><div dir=3D"ltr"><div class=3D"gmail_extra"><br><div class=3D"gmail=
_quote">On Tue, Mar 28, 2017 at 4:23 AM, Alberto Barbati <span dir=3D"ltr">=
<<a href=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">albertoba=
rbati@gmail.com</a>></span> wrote:<br><blockquote class=3D"gmail_quote" =
style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">How=
ever I believe P0577 does not address the issue of decomposition declaratio=
n </blockquote></div><br></div><div class=3D"gmail_extra">Because these two=
"use cases" imply different semantics.<br></div><div class=3D"gmail_extra"=
>When you write<br><br></div><div class=3D"gmail_extra"> auto __ =3D =
lock_guard(m);<br><br></div><div class=3D"gmail_extra">here you mean to *pr=
eserve* the result object, but when<br>you write<br><br></div><div class=3D=
"gmail_extra"> auto [__, a] =3D get_tuple(...);<br><br></div><div cla=
ss=3D"gmail_extra">you mean to *ignore* a part of the result object, so<br>=
physically, just like std::ignore, I don't expect __ here<br>to issue a cal=
l to get(obj), nor an access to a subobject.<br>I don't think the *preservi=
ng* semantics can fulfill the<br>*ignoring* demand.</div></div>
</div></blockquote><br><div>I see it differently. For me, those two are ins=
tances of the same use case: "I don't care about the name, since I don't ne=
ed to refer to this lvalue anymore". In the first case we are not actually =
"preserving" anything, since we are declaring an object whose lifetime woul=
d end at the end of the lexical scope regardless of its name. Similarly in =
the second case, with the only difference that the name would be bound to a=
reference to a subobject of an object whose scope is defined irrespective =
of the binding. In this case the compiler can and probably would omit the b=
inding without observable effects.</div><div><br></div><div>Cheers,</div><d=
iv><br></div><div>Alberto</div></body></html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/81CE0C5F-21B4-46FC-9893-82C65001454C%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/81CE0C5F-21B4-46FC-9893-82C65001454C%=
40gmail.com</a>.<br />
--Apple-Mail-C26B9FEB-DB10-4E8C-AD9D-43F1F8FBE10B--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 22:50:13 +0200
Raw View
> Il giorno 28 mar 2017, alle ore 19:29, Thiago Macieira <thiago@macieira.o=
rg> ha scritto:
>=20
>> On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 10:14:49 PDT Viacheslav Us=
ov wrote:
>> On Tue, Mar 28, 2017 at 7:03 PM, Thiago Macieira <thiago@macieira.org>
>>=20
>> wrote:
>>> This should be equivalent to:
>>> auto __ =3D get_tuple(...);
>>=20
>> Which it is, if auto __ means either "DO retain the object" or "do NOT
>> retain the object"
>=20
> As proposed by the OP: exactly as that declaration would do today, except=
that=20
> you can't access it anymore.
Precisely. There's no "retain" or "not retain" added semantic, as I explain=
ed in another post.
Alberto
--=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/BCEA1679-A15F-41AB-978E-7722F434A5DD%40gmail.com=
..
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 22:53:18 +0200
Raw View
--Apple-Mail-E3D219A5-D38B-487F-9427-41041FDF0471
Content-Type: text/plain; charset=UTF-8
> Il giorno 28 mar 2017, alle ore 19:41, Viacheslav Usov <via.usov@gmail.com> ha scritto:
>
> On Tue, Mar 28, 2017 at 7:29 PM, Thiago Macieira <thiago@macieira.org> wrote:
>
> > As proposed by the OP: exactly as that declaration would do today
>
> Which is UB.
>
Care to explain? I can't see UB there.
Cheers,
Alberto
--
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/B4A84172-03BB-4273-A2B7-9977A9630520%40gmail.com.
--Apple-Mail-E3D219A5-D38B-487F-9427-41041FDF0471
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></div><div><br></div><div><br>Il g=
iorno 28 mar 2017, alle ore 19:41, Viacheslav Usov <<a href=3D"mailto:vi=
a.usov@gmail.com">via.usov@gmail.com</a>> ha scritto:<br><br></div><bloc=
kquote type=3D"cite"><div><div dir=3D"ltr"><div class=3D"gmail_extra"><div =
class=3D"gmail_quote">On Tue, Mar 28, 2017 at 7:29 PM, Thiago Macieira <spa=
n dir=3D"ltr"><<a href=3D"mailto:thiago@macieira.org" target=3D"_blank">=
thiago@macieira.org</a>></span> wrote:<br><div><br></div><div>> As pr=
oposed by the OP: exactly as that declaration would do today</div><div><br>=
</div><div>Which is UB.</div><div><br></div></div></div></div>
</div></blockquote><br><div>Care to explain? I can't see UB there.</div><di=
v><br></div><div>Cheers,</div><div><br></div><div>Alberto</div></body></htm=
l>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/B4A84172-03BB-4273-A2B7-9977A9630520%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/B4A84172-03BB-4273-A2B7-9977A9630520%=
40gmail.com</a>.<br />
--Apple-Mail-E3D219A5-D38B-487F-9427-41041FDF0471--
.
Author: Viacheslav Usov <via.usov@gmail.com>
Date: Tue, 28 Mar 2017 23:09:29 +0200
Raw View
--94eb2c05c8203530bb054bd0e021
Content-Type: text/plain; charset=UTF-8
On Tue, Mar 28, 2017 at 10:53 PM, Alberto Barbati <albertobarbati@gmail.com>
wrote:
> Care to explain? I can't see UB there.
[lex.name]/3 "In addition, some identifiers are reserved for use by C++
implementations and shall not be used otherwise; no diagnostic is required."
No behavior is imposed by the International Standard, hence
[defns.undefined] applies.
Cheers,
V.
--
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/CAA7YVg2HDNtBfRsCgXCw0zd3DpedRRSQcTwHh7jU-w2w8B8FcQ%40mail.gmail.com.
--94eb2c05c8203530bb054bd0e021
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
ue, Mar 28, 2017 at 10:53 PM, Alberto Barbati <span dir=3D"ltr"><<a href=
=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">albertobarbati@gmail=
..com</a>></span> wrote:<br><div><br></div><div>> Care to explain? I c=
an't see UB there.</div><div><br></div><div>[<a href=3D"http://lex.name=
">lex.name</a>]/3 "In addition, some identifiers are reserved for use =
by C++ implementations and shall not be used otherwise;
no diagnostic is required."</div><div><br></div><div>No=C2=A0behavior =
is imposed by the International Standard, hence [defns.undefined] applies.<=
/div><div><br></div><div>Cheers,</div><div>V.</div><div><br></div></div></d=
iv></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CAA7YVg2HDNtBfRsCgXCw0zd3DpedRRSQcTwH=
h7jU-w2w8B8FcQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAA7YVg2HDNtBfRsC=
gXCw0zd3DpedRRSQcTwHh7jU-w2w8B8FcQ%40mail.gmail.com</a>.<br />
--94eb2c05c8203530bb054bd0e021--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Tue, 28 Mar 2017 23:15:06 +0200
Raw View
--Apple-Mail-F645762C-F12B-45B6-8906-54B787115742
Content-Type: text/plain; charset=UTF-8
> Il giorno 28 mar 2017, alle ore 23:09, Viacheslav Usov <via.usov@gmail.com> ha scritto:
>
> On Tue, Mar 28, 2017 at 10:53 PM, Alberto Barbati <albertobarbati@gmail.com> wrote:
>
> > Care to explain? I can't see UB there.
>
> [lex.name]/3 "In addition, some identifiers are reserved for use by C++ implementations and shall not be used otherwise; no diagnostic is required."
>
> No behavior is imposed by the International Standard, hence [defns.undefined] applies.
Well... the starting point of the whole discussion is that my proposal would allow the use of __ in user code...
Alberto
--
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/B03D71FC-16DD-4717-95B8-375144E17909%40gmail.com.
--Apple-Mail-F645762C-F12B-45B6-8906-54B787115742
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></div><div><br></div><div>Il giorn=
o 28 mar 2017, alle ore 23:09, Viacheslav Usov <<a href=3D"mailto:via.us=
ov@gmail.com">via.usov@gmail.com</a>> ha scritto:<br><br></div><blockquo=
te type=3D"cite"><div>On Tue, Mar 28, 2017 at 10:53 PM, Alberto Barbati <sp=
an dir=3D"ltr"><<a href=3D"mailto:albertobarbati@gmail.com" target=3D"_b=
lank">albertobarbati@gmail.com</a>></span> wrote:<br><div><br></div><div=
>> Care to explain? I can't see UB there.</div><div><br></div><div>[<a h=
ref=3D"http://lex.name">lex.name</a>]/3 "In addition, some identifiers are =
reserved for use by C++ implementations and shall not be used otherwise;
no diagnostic is required."</div><div><br></div><div>No behavior is im=
posed by the International Standard, hence [defns.undefined] applies.</div>=
</div></blockquote><br><div>Well... the starting point of the whole discuss=
ion is that my proposal would allow the use of __ in user code...</div><div=
><br></div><div>Alberto</div><div><br></div></body></html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/B03D71FC-16DD-4717-95B8-375144E17909%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/B03D71FC-16DD-4717-95B8-375144E17909%=
40gmail.com</a>.<br />
--Apple-Mail-F645762C-F12B-45B6-8906-54B787115742--
.
Author: Viacheslav Usov <via.usov@gmail.com>
Date: Tue, 28 Mar 2017 23:46:13 +0200
Raw View
--001a113f49e8905da0054bd16373
Content-Type: text/plain; charset=UTF-8
On Tue, Mar 28, 2017 at 11:15 PM, Alberto Barbati <albertobarbati@gmail.com>
wrote:
> Well... the starting point of the whole discussion is that my proposal
would allow the use of __ in user code...
I responded to this: "As proposed by the OP: exactly as that declaration
would do today".
Today, this is UB, per the standard.
Cheers,
V.
--
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/CAA7YVg2GRt-NhqfkUuAJQ5GCPTZVjaC%3DPnHFRjPMRgy5PHA9vA%40mail.gmail.com.
--001a113f49e8905da0054bd16373
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On T=
ue, Mar 28, 2017 at 11:15 PM, Alberto Barbati <span dir=3D"ltr"><<a href=
=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">albertobarbati@gmail=
..com</a>></span> wrote:</div><div class=3D"gmail_quote"><br></div><div c=
lass=3D"gmail_quote">> Well... the starting point of the whole discussio=
n is that my proposal would allow the use of __ in user code...</div><div c=
lass=3D"gmail_quote"><br></div><div class=3D"gmail_quote">I responded to th=
is: "<span style=3D"font-size:12.8px">As proposed by the OP: exactly a=
s that declaration would do today".</span></div><div class=3D"gmail_qu=
ote"><span style=3D"font-size:12.8px"><br></span></div><div class=3D"gmail_=
quote"><span style=3D"font-size:12.8px">Today, this is UB, per the standard=
..</span></div><div class=3D"gmail_quote"><span style=3D"font-size:12.8px"><=
br></span></div><div class=3D"gmail_quote"><span style=3D"font-size:12.8px"=
>Cheers,</span></div><div class=3D"gmail_quote"><span style=3D"font-size:12=
..8px">V.</span></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CAA7YVg2GRt-NhqfkUuAJQ5GCPTZVjaC%3DPn=
HFRjPMRgy5PHA9vA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAA7YVg2GRt-Nhq=
fkUuAJQ5GCPTZVjaC%3DPnHFRjPMRgy5PHA9vA%40mail.gmail.com</a>.<br />
--001a113f49e8905da0054bd16373--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 15:52:46 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 14:46:13 PDT Viacheslav Usov =
wrote:
> I responded to this: "As proposed by the OP: exactly as that declaration
> would do today".
>=20
> Today, this is UB, per the standard.
Ok, so amending: exactly as it is doing today in compilers that don't enfor=
ce=20
that __ is a reserved identifier.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/2676313.6BQvAP5Y8C%40tjmaciei-mobl1.
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Tue, 28 Mar 2017 15:54:41 -0700
Raw View
On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 13:27:25 PDT Alberto Barbati =
wrote:
> > // Fetch the instance type of the receiver into result register.
> > __ movp(result, FieldOperand(string, HeapObject::kMapOffset));
> > __ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOffset));
>=20
> I don't see it much easier to read than:
>=20
> m_ movp(result, FieldOperand(string, HeapObject::kMapOffset));
> m_ movzxbl(result, FieldOperand(result, Map::kInstanceTypeOffset));
>=20
> especially when the macro m_ expands to some variation of "masm". Just my
> opinion.
It does to me, because the space is not as visible, so my first glance was=
=20
"m_movp", which is not at all what was meant.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/5300593.6yK5rIAihH%40tjmaciei-mobl1.
.
Author: TONGARI J <tongari95@gmail.com>
Date: Wed, 29 Mar 2017 08:23:27 -0700 (PDT)
Raw View
------=_Part_1525_1771935987.1490801007373
Content-Type: multipart/alternative;
boundary="----=_Part_1526_1708625297.1490801007373"
------=_Part_1526_1708625297.1490801007373
Content-Type: text/plain; charset=UTF-8
On Tuesday, March 28, 2017 at 9:55:54 PM UTC+8, Matthew Woehlke wrote:
>
> The decomposition case I think would be best solved by allowing empty and
> nested declarations. See
>
> https://groups.google.com/a/isocpp.org/d/msg/std-proposals/gg3_eUhCuqo/HcippDFiBgAJ
> and following posts in the thread. This would let you write:
>
> auto [] = get_lock(); // no name
> auto [x, [], y] = get_tuple(); // middle element is unnamed
> auto [x, [a, b], y] = get_tuple(); // nested decomposition
>
> Both solve the simple case, but both also have additional but
> non-overlapping usefulness. I'm inclined to think that both are useful.
>
While I like the idea, but compilers probably don't. In the following
example:
auto [[a, b], c] = get_tuple();
"[["conflicts with the attribute syntax.
--
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/75b1126c-0292-44dc-973a-c903d31b87ec%40isocpp.org.
------=_Part_1526_1708625297.1490801007373
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Tuesday, March 28, 2017 at 9:55:54 PM UTC+8, Matthew Wo=
ehlke wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-lef=
t: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">The
decomposition case I think would be best solved by allowing empty and
<br>nested declarations. See
<br><a href=3D"https://groups.google.com/a/isocpp.org/d/msg/std-proposals/g=
g3_eUhCuqo/HcippDFiBgAJ" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"=
this.href=3D'https://groups.google.com/a/isocpp.org/d/msg/std-proposals=
/gg3_eUhCuqo/HcippDFiBgAJ';return true;" onclick=3D"this.href=3D'ht=
tps://groups.google.com/a/isocpp.org/d/msg/std-proposals/gg3_eUhCuqo/HcippD=
FiBgAJ';return true;">https://groups.google.com/a/<wbr>isocpp.org/d/msg=
/std-<wbr>proposals/gg3_eUhCuqo/<wbr>HcippDFiBgAJ</a>
<br>and following posts in the thread. This would let you write:
<br>
<br>=C2=A0 auto [] =3D get_lock(); // no name
<br>=C2=A0 auto [x, [], y] =3D get_tuple(); // middle element is unnamed
<br>=C2=A0 auto [x, [a, b], y] =3D get_tuple(); // nested decomposition
<br>
<br>Both solve the simple case, but both also have additional but
<br>non-overlapping usefulness. I'm inclined to think that both are use=
ful.
<br></blockquote><div><br></div><div>While I like the idea, but compilers p=
robably don't. In the following example:</div><div><div class=3D"pretty=
print" style=3D"background-color: rgb(250, 250, 250); border-color: rgb(187=
, 187, 187); border-style: solid; border-width: 1px; word-wrap: break-word;=
"><code class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"=
color: #008;" class=3D"styled-by-prettify">auto</span><span style=3D"color:=
#000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">[[</span><span style=3D"color: #000;" class=3D"=
styled-by-prettify">a</span><span style=3D"color: #660;" class=3D"styled-by=
-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> b</span><span style=3D"color: #660;" class=3D"styled-by-prettify">],</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> c</span><span=
style=3D"color: #660;" class=3D"styled-by-prettify">]</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify">get_tuple</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">();</span></div></code></div><br></div><div>"[["=
;conflicts with the attribute syntax.</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/75b1126c-0292-44dc-973a-c903d31b87ec%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/75b1126c-0292-44dc-973a-c903d31b87ec=
%40isocpp.org</a>.<br />
------=_Part_1526_1708625297.1490801007373--
------=_Part_1525_1771935987.1490801007373--
.
Author: TONGARI J <tongari95@gmail.com>
Date: Wed, 29 Mar 2017 08:43:09 -0700 (PDT)
Raw View
------=_Part_1484_1714623811.1490802189979
Content-Type: multipart/alternative;
boundary="----=_Part_1485_142073767.1490802189979"
------=_Part_1485_142073767.1490802189979
Content-Type: text/plain; charset=UTF-8
On Wednesday, March 29, 2017 at 12:34:29 AM UTC+8, Brittany Friedman wrote:
>
> Instead of __, I'd propose using ?. For example auto ? = scope_guard{...}.
> ? isn't allowed in identifiers so it shouldn't conflict with existing
> nonconformant code. ? is also shorter :)
>
You get my support :)
FWIW, I have developed a "template declname parameter
<https://www.reddit.com/r/cpp/comments/61r0qf/rfc_template_declname_parameter_and/>"
feature which also uses `?` to represent "unnamed".
That said, for lifetime extension, I'd prefer p0577 <http://wg21.link/p0577>
..
--
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/7ccd774e-be7a-4696-aaf4-352e5571fbe5%40isocpp.org.
------=_Part_1485_142073767.1490802189979
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Wednesday, March 29, 2017 at 12:34:29 AM UTC+8, Brittan=
y Friedman wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margi=
n-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"l=
tr"><div><div>Instead of __, I'd propose using ?. For example auto ? =
=3D scope_guard{...}. ? isn't allowed in identifiers so it shouldn'=
t conflict with existing nonconformant code. ? is also shorter :)</div></di=
v></div></blockquote><div><br></div><div>You get my support :)</div><div>FW=
IW, I have developed a "<a href=3D"https://www.reddit.com/r/cpp/commen=
ts/61r0qf/rfc_template_declname_parameter_and/">template declname parameter=
</a>" feature which also uses `?` to represent "unnamed".</d=
iv><div>That said, for lifetime extension, I'd prefer=C2=A0<a href=3D"h=
ttp://wg21.link/p0577">p0577</a>.</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/7ccd774e-be7a-4696-aaf4-352e5571fbe5%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/7ccd774e-be7a-4696-aaf4-352e5571fbe5=
%40isocpp.org</a>.<br />
------=_Part_1485_142073767.1490802189979--
------=_Part_1484_1714623811.1490802189979--
.
Author: Vitali Lovich <vlovich@gmail.com>
Date: Thu, 30 Mar 2017 03:41:37 +0000
Raw View
--001a113dd48afdec35054bea7817
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Tue, Mar 28, 2017 at 10:52 AM Thiago Macieira <thiago@macieira.org>
wrote:
> On ter=C3=A7a-feira, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao Yuan wr=
ote:
> > Whether a call to get<0>(anon) being made
> > certainly has difference, because it can have
> > observable effect.
>
> It does not, so it cannot have an observable effect.
doesnt it? If a function returns a Shared_ptr of a string and string_view
that references the string, if you do:
auto __ =3D getstr()
auto [__, view] =3D getstr()
The behavior is observably different between the two cases depending on
whether the compiler elides the get(0). If you elide the get(0) in the
second example isn't view going to point potentially freed memory? It
seems like there needs to be a distinction for structured binding between
"don't care about name but keep alive for RAII" vs "don't care about value
at all". There may be cases in the former where a compiler finds room for
optimization so it'll be equivalent in many cases. It also has the added
benefit of ensuring that the performance and lifetime behavior is identical
to when you provide an identifier which is great for consistency and
teachability.
Personally I think the "ignore" semantic is not as interesting - if
performance is a concern then you'll have to be slightly more explicit or
if it's common enough a separate mechanism can be developed.
> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
> Software Architect - Intel Open Source Technology Center
>
> --
> 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/2235919.4GAI=
bDEcRC%40tjmaciei-mobl1
> .
>
--=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/CAF8PYMgi7mk_fHs%3DcyYhW4rQad6uDLXrFd7Ef2m7g8Q14=
3p2eg%40mail.gmail.com.
--001a113dd48afdec35054bea7817
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div><br><div class=3D"gmail_quote"><div>On Tue, Mar 28, 2017 at 10:52 AM T=
hiago Macieira <<a href=3D"mailto:thiago@macieira.org">thiago@macieira.o=
rg</a>> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On ter=C3=A7a-fei=
ra, 28 de mar=C3=A7o de 2017 09:53:51 PDT Zhihao Yuan wrote:<br class=3D"gm=
ail_msg">
> Whether a call to get<0>(anon) being made<br class=3D"gmail_msg"=
>
> certainly has difference, because it can have<br class=3D"gmail_msg">
> observable effect.<br class=3D"gmail_msg">
<br class=3D"gmail_msg">
It does not, so it cannot have an observable effect.</blockquote><div>doesn=
t it? If a function returns a Shared_ptr of a string and string_view that r=
eferences the string, if you do:</div><div><br></div><div>=C2=A0 =C2=A0 aut=
o __ =3D getstr()</div><div>=C2=A0 =C2=A0 auto [__, view] =3D getstr()</div=
><div><br></div><div>The behavior is observably different between the two c=
ases depending on whether the compiler elides the get(0).=C2=A0 If you elid=
e the get(0) in the second example isn't view going to point potentiall=
y freed memory?=C2=A0 It seems like there needs to be a distinction for str=
uctured binding between "don't care about name but keep alive for =
RAII" vs "don't care about value at all".=C2=A0 There ma=
y be cases in the former where a compiler finds room for optimization so it=
'll be equivalent in many cases.=C2=A0 It also has the added benefit of=
ensuring that the performance and lifetime behavior is identical to when y=
ou provide an identifier which is great for consistency and teachability.</=
div><div><br></div><div>Personally I think the "ignore" semantic =
is not as interesting - if performance is a concern then you'll have to=
be slightly more explicit or if it's common enough a separate mechanis=
m can be developed.</div><div><br></div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br =
class=3D"gmail_msg">
--<br class=3D"gmail_msg">
Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" rel=3D"noref=
errer" class=3D"gmail_msg" target=3D"_blank">macieira.info</a> - thiago (AT=
) <a href=3D"http://kde.org" rel=3D"noreferrer" class=3D"gmail_msg" target=
=3D"_blank">kde.org</a><br class=3D"gmail_msg">
=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center<br cl=
ass=3D"gmail_msg">
<br class=3D"gmail_msg">
--<br class=3D"gmail_msg">
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br class=3D"gmail_msg=
">
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals%2Bunsubscribe@isocpp.org" class=3D"=
gmail_msg" target=3D"_blank">std-proposals+unsubscribe@isocpp.org</a>.<br c=
lass=3D"gmail_msg">
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" class=3D"gmail_msg" target=3D"_blank">std-proposals@isocpp.org</a>.<b=
r class=3D"gmail_msg">
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/2235919.4GAIbDEcRC%40tjmaciei-mobl1" =
rel=3D"noreferrer" class=3D"gmail_msg" target=3D"_blank">https://groups.goo=
gle.com/a/isocpp.org/d/msgid/std-proposals/2235919.4GAIbDEcRC%40tjmaciei-mo=
bl1</a>.<br class=3D"gmail_msg">
</blockquote></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CAF8PYMgi7mk_fHs%3DcyYhW4rQad6uDLXrFd=
7Ef2m7g8Q143p2eg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAF8PYMgi7mk_fH=
s%3DcyYhW4rQad6uDLXrFd7Ef2m7g8Q143p2eg%40mail.gmail.com</a>.<br />
--001a113dd48afdec35054bea7817--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Wed, 29 Mar 2017 21:12:42 -0700
Raw View
On quarta-feira, 29 de mar=C3=A7o de 2017 20:41:37 PDT Vitali Lovich wrote:
> > It does not, so it cannot have an observable effect.
>=20
> doesnt it? If a function returns a Shared_ptr of a string and string_view
> that references the string, if you do:
Can you be more specific what this function returns? "A shared_ptr of a str=
ing=20
and a string_view" does not make sense, since shared_ptr only takes one=20
template parameter.
I'll analyse the rest when you post your reply.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/3760122.IY8cFr858X%40tjmaciei-mobl1.
.
Author: raffaele.rossi@mavensecurities.com
Date: Thu, 30 Mar 2017 01:08:48 -0700 (PDT)
Raw View
------=_Part_2303_1455096496.1490861328795
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Wouldn't it be much better to have a concept of *Context*? I am taking=20
inspiration from python (I know they use it for RAII, but that is a=20
different discussion).
The code might look like:
void foo() {
// do stuff
with (unique_lock{mutex}) {
// critical code
}
// other stuff
}
Then, for prettiness and to avoid unnecessary indentations, when the=20
*Context* extends till the end of the parent scope, it can just be a=20
declaration:
void foo() {
with unique_lock{mutex};
// critical code
}
You can also nest *Contexts*:
void foo() {
with unique_lock{mutex1};
with unique_lock{mutex2};
// etc
}
Also, by having a proper concept of *Context*, compilers and static=20
analysis tools would have more information available.
I don't know about the decomposition side of things, but perhaps using, say=
=20
@ instead? But I have to admit I still haven't understood the difference=
=20
with std::ignore (perhaps I have homework to do):
auto [x, @, z] =3D expr;
Is anything of this any useful at all?
On Monday, 27 March 2017 21:27:11 UTC+1, Alberto Barbati wrote:
> Hello,
>
> this is a draft for a proposal to add a special meaning to the identifier=
=20
> __ (double underscore) so that it can be used (even repeatedly in the sam=
e=20
> lexical scope) for all variables whose name is not important and that is =
no=20
> longer needed after declaration. The draft includes a few examples.
>
> Is there any interest in this?
>
> Thanks in advance,
>
> Alberto
>
>
--=20
This e-mail together with any attachments (the "Message") is confidential=
=20
and may contain privileged information. If you are not the intended=20
recipient or if you have received this e-mail in error, please notify the=
=20
sender immediately and permanently delete this Message from your system.=20
Do not copy, disclose or distribute the information contained in this=20
Message.
Maven Investment Partners Ltd (No. 07511928), Maven Derivatives Ltd (No.=20
07511840) , MVN Asset Management Limited (No. 09659116), Maven Europe Ltd=
=20
(No. 08966593), Maven Derivatives Asia Limited (No.10361312) & Maven=20
Securities Holding Ltd (No. 07505438) are registered as companies in=20
England and Wales and their registered address is Level 3, 6 Bevis Marks,=
=20
London EC3A 7BA, United Kingdom. The companies=E2=80=99 VAT No. is 13553901=
6. Maven=20
Asia (Hong Kong) Ltd (No. 2444041) is registered in Hong Kong and its=20
registered address is 20/F, 198 Wellington St, Hong Kong. Only Maven=20
Derivatives Ltd and MVN Asset Management Limited are authorised and=20
regulated by the Financial Conduct Authority (Maven Derivatives Ltd FRN:=20
607267, MVN Asset Management Limited FRN: 714429)
--=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/7a03017c-ad72-466f-b2a3-c07f9186f387%40isocpp.or=
g.
------=_Part_2303_1455096496.1490861328795
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Wouldn't it be much better to have a concept of <=
b>Context</b>? I am taking inspiration from python (I know they use it for =
RAII, but that is a different discussion).</div><div><br></div><div>The cod=
e might look like:</div><div><br></div><div><font face=3D"courier new, mono=
space">=C2=A0 void foo() {</font></div><div><font face=3D"courier new, mono=
space">=C2=A0 =C2=A0 // do stuff</font></div><div><font face=3D"courier new=
, monospace">=C2=A0 =C2=A0 with (unique_lock{mutex}) {</font></div><div><fo=
nt face=3D"courier new, monospace">=C2=A0 =C2=A0 =C2=A0 // critical code</f=
ont></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 }</font>=
</div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 // other stu=
ff</font></div><div><font face=3D"courier new, monospace">=C2=A0 }</font></=
div><div><br></div><div>Then, for prettiness and to avoid unnecessary inden=
tations, when the <b>Context</b> extends till the end of the parent scope, =
it can just be a declaration:</div><div><br></div><div><font face=3D"courie=
r new, monospace">=C2=A0 void foo() {</font></div><div><font face=3D"courie=
r new, monospace">=C2=A0 =C2=A0 with unique_lock{mutex};</font></div><div><=
font face=3D"courier new, monospace">=C2=A0 =C2=A0 // critical code<br></fo=
nt></div><div><font face=3D"courier new, monospace">=C2=A0 }</font></div><d=
iv><div><br></div><div>You can also nest <b>Contexts</b>:</div><div><br></d=
iv><div><font face=3D"courier new, monospace">=C2=A0 void foo() {</font></d=
iv><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 with unique_loc=
k{mutex1};</font></div><div><div><font face=3D"courier new, monospace">=C2=
=A0 =C2=A0 with unique_lock{mutex2};</font></div><div><font face=3D"courier=
new, monospace">=C2=A0 =C2=A0 // etc</font></div><div><font face=3D"courie=
r new, monospace">=C2=A0 }</font></div><div><br></div><div>Also, by having =
a proper concept of <b>Context</b>, compilers and static analysis tools wou=
ld have more information available.</div><div><br></div><div>I don't kn=
ow about the decomposition side of things, but perhaps using, say <font fac=
e=3D"courier new, monospace">@</font> =C2=A0instead? But I have to admit I =
still haven't understood the difference with <font face=3D"courier new,=
monospace">std::ignore</font> (perhaps I have homework to do):</div><div><=
br></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 auto [x, =
@, z] =3D expr;<br></font></div><div><br></div><div>Is anything of this any=
useful at all?</div><div><br></div><div>On Monday, 27 March 2017 21:27:11 =
UTC+1, Alberto Barbati wrote:<br></div><blockquote class=3D"gmail_quote" s=
tyle=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-le=
ft: 1ex;"><div dir=3D"ltr">Hello,<br><br>this is a draft for a proposal to =
add a special meaning to the identifier __ (double underscore) so that it c=
an be used (even repeatedly in the same lexical scope) for all variables wh=
ose name is not important and that is no longer needed after declaration. T=
he draft includes a few examples.<br><br>Is there any interest in this?<br>=
<br>Thanks in advance,<br><br>Alberto<br><br></div></blockquote></div></div=
></div>
<br>
<p><font color=3D"#222222" face=3D"Arial, sans-serif" size=3D"2">This e-mai=
l together with any attachments (the "Message") is confidential a=
nd may contain privileged information. If you are not the intended recipien=
t or if you have received this e-mail in error, please notify the sender im=
mediately and permanently delete this Message from your system. =C2=A0Do no=
t copy, disclose or distribute the information contained in this Message.</=
font></p><p><span style=3D"color:rgb(34,34,34);font-family:Arial,sans-serif=
"><font size=3D"2">Maven Investment Partners Ltd (No. 07511928), Maven Deri=
vatives Ltd (No. 07511840) , MVN Asset Management Limited (No. 09659116), M=
aven Europe Ltd (No. 08966593), Maven Derivatives Asia Limited (No.10361312=
) & Maven Securities Holding Ltd (No. 07505438) are registered as compa=
nies in England and Wales and their registered address is Level 3, 6 Bevis =
Marks, London EC3A 7BA, United Kingdom. The companies=E2=80=99 VAT No. is 1=
35539016. Maven Asia (Hong Kong) Ltd (No. 2444041) is registered in Hong Ko=
ng and its registered address is 20/F, 198 Wellington St, Hong Kong. =C2=A0=
Only Maven Derivatives Ltd and MVN Asset Management Limited are authorised =
and regulated by the Financial Conduct Authority (Maven Derivatives Ltd FRN=
: 607267, MVN Asset Management Limited FRN: 714429)</font></span></p>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/7a03017c-ad72-466f-b2a3-c07f9186f387%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/7a03017c-ad72-466f-b2a3-c07f9186f387=
%40isocpp.org</a>.<br />
------=_Part_2303_1455096496.1490861328795--
.
Author: Raffaele Rossi <rossi.raffaele@gmail.com>
Date: Thu, 30 Mar 2017 01:12:46 -0700 (PDT)
Raw View
------=_Part_3045_308760219.1490861566356
Content-Type: multipart/alternative;
boundary="----=_Part_3046_1573441332.1490861566356"
------=_Part_3046_1573441332.1490861566356
Content-Type: text/plain; charset=UTF-8
Wouldn't it be much better to have a concept of Context? I am taking
inspiration from python (I know they use it for RAII, but that is a
different discussion).
The code might look like:
void foo() {
// do stuff
with (unique_lock{mutex}) {
// critical code
}
// other stuff
}
Then, for prettiness and to avoid unnecessary indentations, when the
Context extends till the end of the parent scope, it can just be a
declaration:
void foo() {
with unique_lock{mutex};
// critical code
}
You can also nest Contexts:
void foo() {
with unique_lock{mutex1};
with unique_lock{mutex2};
// etc
}
Also, by having a proper concept of Context, compilers and static analysis
tools would have more information available.
I don't know about the decomposition side of things, but perhaps using, say
@ instead? But I have to admit I still haven't understood the difference
with std::ignore (perhaps I have homework to do):
auto [x, @, z] = expr;
Is anything of this any useful at all?
--
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/00f80877-4564-406b-9dc5-d2d961b8dce3%40isocpp.org.
------=_Part_3046_1573441332.1490861566356
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Wouldn't it be much better to have a concept of C=
ontext? I am taking inspiration from python (I know they use it for RAII, b=
ut that is a different discussion).<br></div><div><br></div><div>The code m=
ight look like:</div><div><font face=3D"courier new, monospace"><br></font>=
</div><div><font face=3D"courier new, monospace">=C2=A0 void foo() {</font>=
</div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 // do stuff<=
/font></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 with (=
unique_lock{mutex}) {</font></div><div><font face=3D"courier new, monospace=
">=C2=A0 =C2=A0 =C2=A0 // critical code</font></div><div><font face=3D"cour=
ier new, monospace">=C2=A0 =C2=A0 }</font></div><div><font face=3D"courier =
new, monospace">=C2=A0 =C2=A0 // other stuff</font></div><div><font face=3D=
"courier new, monospace">=C2=A0 }</font></div><div><br></div><div>Then, for=
prettiness and to avoid unnecessary indentations, when the Context extends=
till the end of the parent scope, it can just be a declaration:</div><div>=
<br></div><div><font face=3D"courier new, monospace">=C2=A0 void foo() {</f=
ont></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 with uni=
que_lock{mutex};</font></div><div><font face=3D"courier new, monospace">=C2=
=A0 =C2=A0 // critical code</font></div><div><font face=3D"courier new, mon=
ospace">=C2=A0 }</font></div><div><br></div><div>You can also nest Contexts=
:</div><div><br></div><div><font face=3D"courier new, monospace">=C2=A0 voi=
d foo() {</font></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=
=A0 with unique_lock{mutex1};</font></div><div><font face=3D"courier new, m=
onospace">=C2=A0 =C2=A0 with unique_lock{mutex2};</font></div><div><font fa=
ce=3D"courier new, monospace">=C2=A0 =C2=A0 // etc</font></div><div><font f=
ace=3D"courier new, monospace">=C2=A0 }</font></div><div><br></div><div>Als=
o, by having a proper concept of Context, compilers and static analysis too=
ls would have more information available.</div><div><br></div><div>I don=
9;t know about the decomposition side of things, but perhaps using, say @ =
=C2=A0instead? But I have to admit I still haven't understood the diffe=
rence with <font face=3D"courier new, monospace">std::ignore</font> (perhap=
s I have homework to do):</div><div><br></div><div><font face=3D"courier ne=
w, monospace">=C2=A0 =C2=A0 auto [x, @, z] =3D expr;</font></div><div><br><=
/div><div>Is anything of this any useful at all?</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" 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/00f80877-4564-406b-9dc5-d2d961b8dce3%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/00f80877-4564-406b-9dc5-d2d961b8dce3=
%40isocpp.org</a>.<br />
------=_Part_3046_1573441332.1490861566356--
------=_Part_3045_308760219.1490861566356--
.
Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Thu, 30 Mar 2017 10:29:00 -0400
Raw View
On 2017-03-30 04:12, Raffaele Rossi wrote:
> Wouldn't it be much better to have a concept of Context? I am taking
> inspiration from python (I know they use it for RAII, but that is a
> different discussion).
>
> The code might look like:
>
> void foo() {
> // do stuff
> with (unique_lock{mutex}) {
> // critical code
> }
> // other stuff
> }
Or, without needing to introduce a new keyword:
void foo() {
// do stuff
using (unique_lock{mutex}) {
// critical code
}
// other stuff
}
We could support both:
using (expression) { ... }
using (declaration = expression) { ... }
....though of course the latter is equivalent to:
if (declaration = expression; true)
....or, y'know, just using some bare {}'s, which is probably why no one
has been enthusiastic about such a proposal. That may also be why this
direction has not been pursued more enthusiastically; anonymous
variables and/or lifetime extension just seem like a better solution...
(I'm confident this has come up before...)
--
Matthew
--
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/58DD162C.30902%40gmail.com.
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Thu, 30 Mar 2017 07:36:09 -0700 (PDT)
Raw View
------=_Part_2021_219455901.1490884569867
Content-Type: multipart/alternative;
boundary="----=_Part_2022_861500445.1490884569868"
------=_Part_2022_861500445.1490884569868
Content-Type: text/plain; charset=UTF-8
On Thursday, March 30, 2017 at 4:12:46 AM UTC-4, Raffaele Rossi wrote:
>
> Wouldn't it be much better to have a concept of Context?
>
Why would I want to introduce a whole new scope when simply declaring an
unnamed variable is sufficient? It's adding pointless braces for something
that C++ gives by default.
Other languages use this syntax because they *don't* provide RAII by
default. C++ does, so there's no need for explicit syntax to say what we
normally have.
--
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/ee6468dd-02b5-4fe8-a669-8a11d753489c%40isocpp.org.
------=_Part_2022_861500445.1490884569868
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Thursday, March 30, 2017 at 4:12:46 AM UTC-4, Raffaele =
Rossi wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-lef=
t: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><=
div>Wouldn't it be much better to have a concept of Context?</div></div=
></blockquote><div><br>Why would I want to introduce a whole new scope when=
simply declaring an unnamed variable is sufficient? It's adding pointl=
ess braces for something that C++ gives by default.<br><br>Other languages =
use this syntax because they <i>don't</i> provide RAII by default. C++ =
does, so there's no need for explicit syntax to say what we normally ha=
ve.<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/ee6468dd-02b5-4fe8-a669-8a11d753489c%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/ee6468dd-02b5-4fe8-a669-8a11d753489c=
%40isocpp.org</a>.<br />
------=_Part_2022_861500445.1490884569868--
------=_Part_2021_219455901.1490884569867--
.
Author: Raffaele Rossi <rossi.raffaele@gmail.com>
Date: Thu, 30 Mar 2017 09:25:39 -0700 (PDT)
Raw View
------=_Part_2799_847978691.1490891139645
Content-Type: multipart/alternative;
boundary="----=_Part_2800_1482505948.1490891139645"
------=_Part_2800_1482505948.1490891139645
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
You only add a scope if you need it, i.e to lock only a section of a=20
function, in which case you have to create a scope anyway:
void foo() {
// do stuff
{
unique_lock __{mutex};
}
}
And between the two, doing using(...) { } is also more explicit on the=20
intention, instead of just opening a "anonymous" scope, isn't it?
Il giorno gioved=C3=AC 30 marzo 2017 15:36:10 UTC+1, Nicol Bolas ha scritto=
:
>
> On Thursday, March 30, 2017 at 4:12:46 AM UTC-4, Raffaele Rossi wrote:
>>
>> Wouldn't it be much better to have a concept of Context?
>>
>
> Why would I want to introduce a whole new scope when simply declaring an=
=20
> unnamed variable is sufficient? It's adding pointless braces for somethin=
g=20
> that C++ gives by default.
>
> Other languages use this syntax because they *don't* provide RAII by=20
> default. C++ does, so there's no need for explicit syntax to say what we=
=20
> normally have.
>
--=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/fb4d95ca-355d-4248-8949-628f42c999dc%40isocpp.or=
g.
------=_Part_2800_1482505948.1490891139645
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>You only add a scope if you need it, i.e to lock only=
a section of a function, in which case you have to create a scope anyway:<=
br></div><div><br></div><div><font face=3D"courier new, monospace">void foo=
() {</font></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0 /=
/ do stuff</font></div><div><font face=3D"courier new, monospace">=C2=A0 =
=C2=A0 {</font></div><div><font face=3D"courier new, monospace">=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 unique_lock __{mutex};</font></div><div><font face=3D"cou=
rier new, monospace">=C2=A0 =C2=A0 }<br>}</font></div><div><br>And between =
the two, doing <font face=3D"courier new, monospace">using(...) { }</font> =
is also more explicit on the intention, instead of just opening a "ano=
nymous" scope, isn't it?<br><br>Il giorno gioved=C3=AC 30 marzo 20=
17 15:36:10 UTC+1, Nicol Bolas ha scritto:<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">On Thursday, March 30, 2017 at 4:12:46 AM UTC-=
4, Raffaele Rossi wrote:<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>Wouldn't it be much better to have a concept of Context?</di=
v></div></blockquote><div><br>Why would I want to introduce a whole new sco=
pe when simply declaring an unnamed variable is sufficient? It's adding=
pointless braces for something that C++ gives by default.<br><br>Other lan=
guages use this syntax because they <i>don't</i> provide RAII by defaul=
t. C++ does, so there's no need for explicit syntax to say what we norm=
ally have.<br></div></div></blockquote></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/fb4d95ca-355d-4248-8949-628f42c999dc%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/fb4d95ca-355d-4248-8949-628f42c999dc=
%40isocpp.org</a>.<br />
------=_Part_2800_1482505948.1490891139645--
------=_Part_2799_847978691.1490891139645--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Thu, 30 Mar 2017 19:31:39 +0200
Raw View
> Il giorno 30 mar 2017, alle ore 05:41, Vitali Lovich <vlovich@gmail.com> =
ha scritto:
>=20
> If a function returns a Shared_ptr of a string and string_view that refer=
ences the string, if you do:
>=20
> auto __ =3D getstr()
> auto [__, view] =3D getstr()
>=20
> The behavior is observably different between the two cases depending on w=
hether the compiler elides the get(0). If you elide the get(0) in the seco=
nd example isn't view going to point potentially freed memory?=20
Why would view point to potentially freed memory? Decomposition declaration=
works like this:
1) initialize a hidden "main" object using the initializer
2) bind "element" names to subobjects of the main objects
The elements are guaranteed not to outlive the main object. Point 2) can be=
obtained differently according to the type of the main object. In the most=
general case, get<>() may be invoked. The Standard does not mandate that g=
et<>() function shall have no side effects, but, really, the intent should =
be to get hold of a reference of a subobject of the main object, no signifi=
cant task should be performed.
> It seems like there needs to be a distinction for structured binding betw=
een "don't care about name but keep alive for RAII" vs "don't care about va=
lue at all".
In the case of a decomposition declaration, all RAII logic should performed=
by the main object itself, since it's guaranteed to be destroyed after the=
elements. Having an element perform RAII logic is a misuse of the feature.=
Remember that you are not required to always decompose the object with thi=
s syntax.
> Personally I think the "ignore" semantic is not as interesting - if perfo=
rmance is a concern then you'll have to be slightly more explicit or if it'=
s common enough a separate mechanism can be developed.
I believe it is interesting. However, I understand what you mean. For regul=
ar declarations we definitely want the "keep" semantic, I guess we agree on=
that. For decomposition declarations we might get either a "keep" or "igno=
re" semantic. In most cases (e.g.: aggregates, arrays and objects whose get=
() functions have no side effect) the result is the same. In the remaining =
corner case, I expect the "ignore" semantic to be more useful, but this is =
a personal opinion. It's a fact, however that if we mandate the "ignore" se=
mantic, the programmer might easily get the "keep" by just providing any id=
entifier different from __. However if we mandate the "keep" semantic, ther=
e's no way to get the other one.
A.
--=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/BD003722-5383-491F-8D6C-0B560A4D7B2F%40gmail.com=
..
.
Author: Vitali Lovich <vlovich@gmail.com>
Date: Thu, 30 Mar 2017 21:40:03 +0000
Raw View
--001a11398d6ccc7b46054bf989df
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
tuple<shared_ptr<string>, string_view> getstr()
The 2nd argument is a view into the string owned by shared_ptr.
The semantics of whether or not the string view points to owned memory
depends on the lifetime of the shared_ptr and my understanding of what you
were saying is that the lifetime changes depending on whether the get() is
done or ignored.
On Wed, Mar 29, 2017 at 9:12 PM Thiago Macieira <thiago@macieira.org> wrote=
:
> On quarta-feira, 29 de mar=C3=A7o de 2017 20:41:37 PDT Vitali Lovich wrot=
e:
> > > It does not, so it cannot have an observable effect.
> >
> > doesnt it? If a function returns a Shared_ptr of a string and string_vi=
ew
> > that references the string, if you do:
>
> Can you be more specific what this function returns? "A shared_ptr of a
> string
> and a string_view" does not make sense, since shared_ptr only takes one
> template parameter.
>
> I'll analyse the rest when you post your reply.
>
> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
> Software Architect - Intel Open Source Technology Center
>
> --
> 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/3760122.IY8c=
Fr858X%40tjmaciei-mobl1
> .
>
--=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/CAF8PYMgR_%3DQtP094%2BZyER%3DymjZQ_TmtbU7eYYh9wL=
WDV-FmzJw%40mail.gmail.com.
--001a11398d6ccc7b46054bf989df
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div>tuple<shared_ptr<string>, string_view> getstr()</div><div>=
<br></div><div>The 2nd argument is a view into the string owned by shared_p=
tr.</div><div><br></div><div>The semantics of whether or not the string vie=
w points to owned memory depends on the lifetime of the shared_ptr and my u=
nderstanding of what you were saying is that the lifetime changes depending=
on whether the get() is done or ignored.</div><div><br><div class=3D"gmail=
_quote"><div>On Wed, Mar 29, 2017 at 9:12 PM Thiago Macieira <<a href=3D=
"mailto:thiago@macieira.org">thiago@macieira.org</a>> wrote:<br></div><b=
lockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px =
#ccc solid;padding-left:1ex">On quarta-feira, 29 de mar=C3=A7o de 2017 20:4=
1:37 PDT Vitali Lovich wrote:<br class=3D"gmail_msg">
> > It does not, so it cannot have an observable effect.<br class=3D"=
gmail_msg">
><br class=3D"gmail_msg">
> doesnt it? If a function returns a Shared_ptr of a string and string_v=
iew<br class=3D"gmail_msg">
> that references the string, if you do:<br class=3D"gmail_msg">
<br class=3D"gmail_msg">
Can you be more specific what this function returns? "A shared_ptr of =
a string<br class=3D"gmail_msg">
and a string_view" does not make sense, since shared_ptr only takes on=
e<br class=3D"gmail_msg">
template parameter.<br class=3D"gmail_msg">
<br class=3D"gmail_msg">
I'll analyse the rest when you post your reply.<br class=3D"gmail_msg">
<br class=3D"gmail_msg">
--<br class=3D"gmail_msg">
Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" rel=3D"noref=
errer" class=3D"gmail_msg" target=3D"_blank">macieira.info</a> - thiago (AT=
) <a href=3D"http://kde.org" rel=3D"noreferrer" class=3D"gmail_msg" target=
=3D"_blank">kde.org</a><br class=3D"gmail_msg">
=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center<br cl=
ass=3D"gmail_msg">
<br class=3D"gmail_msg">
--<br class=3D"gmail_msg">
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br class=3D"gmail_msg=
">
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals%2Bunsubscribe@isocpp.org" class=3D"=
gmail_msg" target=3D"_blank">std-proposals+unsubscribe@isocpp.org</a>.<br c=
lass=3D"gmail_msg">
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" class=3D"gmail_msg" target=3D"_blank">std-proposals@isocpp.org</a>.<b=
r class=3D"gmail_msg">
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3760122.IY8cFr858X%40tjmaciei-mobl1" =
rel=3D"noreferrer" class=3D"gmail_msg" target=3D"_blank">https://groups.goo=
gle.com/a/isocpp.org/d/msgid/std-proposals/3760122.IY8cFr858X%40tjmaciei-mo=
bl1</a>.<br class=3D"gmail_msg">
</blockquote></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CAF8PYMgR_%3DQtP094%2BZyER%3DymjZQ_Tm=
tbU7eYYh9wLWDV-FmzJw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoote=
r">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAF8PYMgR_%=
3DQtP094%2BZyER%3DymjZQ_TmtbU7eYYh9wLWDV-FmzJw%40mail.gmail.com</a>.<br />
--001a11398d6ccc7b46054bf989df--
.
Author: Vitali Lovich <vlovich@gmail.com>
Date: Thu, 30 Mar 2017 21:41:56 +0000
Raw View
--001a113cff84817262054bf990a2
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Ah. But I forgot now that with structured binding there's a hidden local
variable anyway for the tuple itself. I was thinking the compiler was
smart and applied RVO to the individual elements directly.
On Thu, Mar 30, 2017 at 2:40 PM Vitali Lovich <vlovich@gmail.com> wrote:
> tuple<shared_ptr<string>, string_view> getstr()
>
> The 2nd argument is a view into the string owned by shared_ptr.
>
> The semantics of whether or not the string view points to owned memory
> depends on the lifetime of the shared_ptr and my understanding of what yo=
u
> were saying is that the lifetime changes depending on whether the get() i=
s
> done or ignored.
>
> On Wed, Mar 29, 2017 at 9:12 PM Thiago Macieira <thiago@macieira.org>
> wrote:
>
> On quarta-feira, 29 de mar=C3=A7o de 2017 20:41:37 PDT Vitali Lovich wrot=
e:
> > > It does not, so it cannot have an observable effect.
> >
> > doesnt it? If a function returns a Shared_ptr of a string and string_vi=
ew
> > that references the string, if you do:
>
> Can you be more specific what this function returns? "A shared_ptr of a
> string
> and a string_view" does not make sense, since shared_ptr only takes one
> template parameter.
>
> I'll analyse the rest when you post your reply.
>
> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
> Software Architect - Intel Open Source Technology Center
>
> --
> 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/3760122.IY8c=
Fr858X%40tjmaciei-mobl1
> .
>
>
--=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/CAF8PYMi%2B6VjCUvVTTvVKOCg9xTxV8mS8CLz3VpLLpqVpK=
YzzhA%40mail.gmail.com.
--001a113cff84817262054bf990a2
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div>Ah. But I forgot now that with structured binding there's a hidden=
local variable anyway for the tuple itself.=C2=A0 I was thinking the compi=
ler was smart and applied RVO to the individual elements directly.</div><di=
v><br><div class=3D"gmail_quote"><div>On Thu, Mar 30, 2017 at 2:40 PM Vital=
i Lovich <<a href=3D"mailto:vlovich@gmail.com">vlovich@gmail.com</a>>=
wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex"><div class=3D"gmail_msg">tu=
ple<shared_ptr<string>, string_view> getstr()</div><div class=
=3D"gmail_msg"><br class=3D"gmail_msg"></div><div class=3D"gmail_msg">The 2=
nd argument is a view into the string owned by shared_ptr.</div><div class=
=3D"gmail_msg"><br class=3D"gmail_msg"></div><div class=3D"gmail_msg">The s=
emantics of whether or not the string view points to owned memory depends o=
n the lifetime of the shared_ptr and my understanding of what you were sayi=
ng is that the lifetime changes depending on whether the get() is done or i=
gnored.</div><div class=3D"gmail_msg"><br class=3D"gmail_msg"><div class=3D=
"gmail_quote gmail_msg"><div class=3D"gmail_msg">On Wed, Mar 29, 2017 at 9:=
12 PM Thiago Macieira <<a href=3D"mailto:thiago@macieira.org" class=3D"g=
mail_msg" target=3D"_blank">thiago@macieira.org</a>> wrote:<br class=3D"=
gmail_msg"></div><blockquote class=3D"gmail_quote gmail_msg" style=3D"margi=
n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On quarta-feira, =
29 de mar=C3=A7o de 2017 20:41:37 PDT Vitali Lovich wrote:<br class=3D"gmai=
l_msg">
> > It does not, so it cannot have an observable effect.<br class=3D"=
gmail_msg">
><br class=3D"gmail_msg">
> doesnt it? If a function returns a Shared_ptr of a string and string_v=
iew<br class=3D"gmail_msg">
> that references the string, if you do:<br class=3D"gmail_msg">
<br class=3D"gmail_msg">
Can you be more specific what this function returns? "A shared_ptr of =
a string<br class=3D"gmail_msg">
and a string_view" does not make sense, since shared_ptr only takes on=
e<br class=3D"gmail_msg">
template parameter.<br class=3D"gmail_msg">
<br class=3D"gmail_msg">
I'll analyse the rest when you post your reply.<br class=3D"gmail_msg">
<br class=3D"gmail_msg">
--<br class=3D"gmail_msg">
Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" rel=3D"noref=
errer" class=3D"gmail_msg" target=3D"_blank">macieira.info</a> - thiago (AT=
) <a href=3D"http://kde.org" rel=3D"noreferrer" class=3D"gmail_msg" target=
=3D"_blank">kde.org</a><br class=3D"gmail_msg">
=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center<br cl=
ass=3D"gmail_msg">
<br class=3D"gmail_msg">
--<br class=3D"gmail_msg">
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br class=3D"gmail_msg=
">
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals%2Bunsubscribe@isocpp.org" class=3D"=
gmail_msg" target=3D"_blank">std-proposals+unsubscribe@isocpp.org</a>.<br c=
lass=3D"gmail_msg">
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" class=3D"gmail_msg" target=3D"_blank">std-proposals@isocpp.org</a>.<b=
r class=3D"gmail_msg">
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3760122.IY8cFr858X%40tjmaciei-mobl1" =
rel=3D"noreferrer" class=3D"gmail_msg" target=3D"_blank">https://groups.goo=
gle.com/a/isocpp.org/d/msgid/std-proposals/3760122.IY8cFr858X%40tjmaciei-mo=
bl1</a>.<br class=3D"gmail_msg">
</blockquote></div></div></blockquote></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CAF8PYMi%2B6VjCUvVTTvVKOCg9xTxV8mS8CL=
z3VpLLpqVpKYzzhA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAF8PYMi%2B6VjC=
UvVTTvVKOCg9xTxV8mS8CLz3VpLLpqVpKYzzhA%40mail.gmail.com</a>.<br />
--001a113cff84817262054bf990a2--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Fri, 31 Mar 2017 08:49:43 +0200
Raw View
--Apple-Mail-8BD016DC-4DF2-4AB4-81DA-85B1E644EB70
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
> Il giorno 30 mar 2017, alle ore 23:41, Vitali Lovich <vlovich@gmail.com> =
ha scritto:
>=20
> Ah. But I forgot now that with structured binding there's a hidden local =
variable anyway for the tuple itself. I was thinking the compiler was smar=
t and applied RVO to the individual elements directly.
Exactly. All RAII logic is (or at least should be) performed by the "main" =
hidden object that is being decomposed. No get() function should ever depen=
d on the side effects of other get() function on the same object, because o=
therwise the following valid code would become problematic:
auto x =3D getstr();
auto v =3D get<1>(x);
A.=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.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/9523C82E-3AF8-40ED-9102-B89084FC7D26%40gmail.com=
..
--Apple-Mail-8BD016DC-4DF2-4AB4-81DA-85B1E644EB70
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><span></span></div><div><meta http=
-equiv=3D"content-type" content=3D"text/html; charset=3Dutf-8"><div><br></d=
iv><div>Il giorno 30 mar 2017, alle ore 23:41, Vitali Lovich <<a href=3D=
"mailto:vlovich@gmail.com">vlovich@gmail.com</a>> ha scritto:<br><br></d=
iv><blockquote type=3D"cite"><div><div>Ah. But I forgot now that with struc=
tured binding there's a hidden local variable anyway for the tuple itself.&=
nbsp; I was thinking the compiler was smart and applied RVO to the individu=
al elements directly.</div></div></blockquote><div><br></div>Exactly. All R=
AII logic is (or at least should be) performed by the "main" hidden object =
that is being decomposed. No get() function should ever depend on the side =
effects of other get() function on the same object, because otherwise the f=
ollowing valid code would become problematic:<div><br></div><div>auto x =3D=
<span style=3D"background-color: rgba(255, 255, 255, 0);">getstr();</=
span></div><div>auto v =3D get<1>(x);</div><div><br></div><div>A.&nbs=
p;</div></div></body></html>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/9523C82E-3AF8-40ED-9102-B89084FC7D26%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/9523C82E-3AF8-40ED-9102-B89084FC7D26%=
40gmail.com</a>.<br />
--Apple-Mail-8BD016DC-4DF2-4AB4-81DA-85B1E644EB70--
.
Author: Richard Smith <richard@metafoo.co.uk>
Date: Sat, 1 Apr 2017 21:19:37 -0700
Raw View
--001a114423f6ddf90f054c275944
Content-Type: text/plain; charset=UTF-8
I don't think you need a reserved identifier for this, nor to change the
meaning of any existing code (whether or not it uses a reserved
identifier). It seems to me that your use cases could be addressed by
allowing the identifier _ to declare multiple entities within a block
scope. (If it is multiply declared, any reference to it would be ill-formed
due to ambiguity; if it's only declared once, it can still be referenced
for backwards compatibility, but such usage could be deprecated.)
Have you considered that possibility? It would give a better name (_ rather
than __) and avoid "breaking" existing code that uses __.
On 27 Mar 2017 10:27 am, "Alberto Barbati" <albertobarbati@gmail.com> wrote:
Hello,
this is a draft for a proposal to add a special meaning to the identifier
__ (double underscore) so that it can be used (even repeatedly in the same
lexical scope) for all variables whose name is not important and that is no
longer needed after declaration. The draft includes a few examples.
Is there any interest in this?
Thanks in advance,
Alberto
--
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/985b9b2a-c734-45eb-
95f4-db4dc0d309a1%40isocpp.org
<https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/985b9b2a-c734-45eb-95f4-db4dc0d309a1%40isocpp.org?utm_medium=email&utm_source=footer>
..
--
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/CAOfiQqnfaqA4YhpNphKg4oPPAMNOe7vPjqxqLvA-EnGjk-pVEA%40mail.gmail.com.
--001a114423f6ddf90f054c275944
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto"><div>I don't think you need a reserved identifier for=
this, nor to change the meaning of any existing code (whether or not it us=
es a reserved identifier). It seems to me that your use cases could be addr=
essed by allowing the identifier _ to declare multiple entities within a bl=
ock scope. (If it is multiply declared, any reference to it would be ill-fo=
rmed due to ambiguity; if it's only declared once, it can still be refe=
renced for backwards compatibility, but such usage could be deprecated.)<br=
><div class=3D"gmail_extra" dir=3D"auto"><br></div><div class=3D"gmail_extr=
a" dir=3D"auto">Have you considered that possibility? It would give a bette=
r name (_ rather than __) and avoid "breaking" existing code that=
uses __.</div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On=
27 Mar 2017 10:27 am, "Alberto Barbati" <<a href=3D"mailto:al=
bertobarbati@gmail.com">albertobarbati@gmail.com</a>> wrote:<br type=3D"=
attribution"><blockquote class=3D"quote" style=3D"margin:0 0 0 .8ex;border-=
left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">Hello,<br><br>this i=
s a draft for a proposal to add a special meaning to the identifier __ (dou=
ble underscore) so that it can be used (even repeatedly in the same lexical=
scope) for all variables whose name is not important and that is no longer=
needed after declaration. The draft includes a few examples.<br><br>Is the=
re any interest in this?<br><br>Thanks in advance,<br><br>Alberto<font colo=
r=3D"#888888"><br><br></font></div><font color=3D"#888888">
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">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/985b9b2a-c734-45eb-95f4-db4dc0d309a1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/985b=
9b2a-c734-45eb-<wbr>95f4-db4dc0d309a1%40isocpp.org</a><wbr>.<br>
</font></blockquote></div><br></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/CAOfiQqnfaqA4YhpNphKg4oPPAMNOe7vPjqxq=
LvA-EnGjk-pVEA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAOfiQqnfaqA4YhpN=
phKg4oPPAMNOe7vPjqxqLvA-EnGjk-pVEA%40mail.gmail.com</a>.<br />
--001a114423f6ddf90f054c275944--
.
Author: Magnus Fromreide <magfr@lysator.liu.se>
Date: Sun, 2 Apr 2017 09:33:50 +0200
Raw View
On Sat, Apr 01, 2017 at 09:19:37PM -0700, Richard Smith wrote:
> I don't think you need a reserved identifier for this, nor to change the
> meaning of any existing code (whether or not it uses a reserved
> identifier). It seems to me that your use cases could be addressed by
> allowing the identifier _ to declare multiple entities within a block
> scope. (If it is multiply declared, any reference to it would be ill-formed
> due to ambiguity; if it's only declared once, it can still be referenced
> for backwards compatibility, but such usage could be deprecated.)
>
> Have you considered that possibility? It would give a better name (_ rather
> than __) and avoid "breaking" existing code that uses __.
If there are concerns about the use of __ due to it beeing used in real code
then that is way worse for _.
One common use of _ is as a macro name in gettextized GNU programs. Now, this
use doesn't clash with the proposed use case but I doubt they are the only
ones that have used the name.
Additionally the name _ is reserved for the library so it is not even ours
in the first place.
/MF
--
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/20170402073350.GA3583%40noemi.
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Sun, 02 Apr 2017 11:03:03 -0700
Raw View
On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
> Have you considered that possibility? It would give a better name (_ rath=
er
> than __) and avoid "breaking" existing code that uses __.
_ is not reserved to the compiler and is VERY often #defined to gettext.
Let's use __. At least we can point to V8 developers and tell them it's the=
ir=20
own fault.
--=20
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--=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/1491170458.9U0G8TLsOk%40tjmaciei-mobl1.
.
Author: Richard Smith <richard@metafoo.co.uk>
Date: Sun, 2 Apr 2017 12:28:31 -0700
Raw View
--001a114b43668063b9054c340d9b
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On 2 April 2017 at 11:03, Thiago Macieira <thiago@macieira.org> wrote:
> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
> > Have you considered that possibility? It would give a better name (_
> rather
> > than __) and avoid "breaking" existing code that uses __.
>
> _ is not reserved to the compiler and is VERY often #defined to gettext.
>
Only as a function-like macro.
Let's use __.
Let's use the thing that works best for C++, sure. I am not (yet) convinced
that's __.
> At least we can point to V8 developers and tell them it's their
> own fault.
>
> --
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
> Software Architect - Intel Open Source Technology Center
>
> --
> 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/1491170458.9U0G8TLsOk%40tjmaciei-mobl1.
>
--=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/CAOfiQqmkjfEqEQpbxWnaLfibTpRTKJdF2UN8M60pL38Qg5s=
43g%40mail.gmail.com.
--001a114b43668063b9054c340d9b
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On 2=
April 2017 at 11:03, Thiago Macieira <span dir=3D"ltr"><<a href=3D"mail=
to:thiago@macieira.org" target=3D"_blank">thiago@macieira.org</a>></span=
> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex"><span class=3D"">On s=C3=A1bado,=
1 de abril de 2017 21:19:37 PDT Richard Smith wrote:<br>
> Have you considered that possibility? It would give a better name (_ r=
ather<br>
> than __) and avoid "breaking" existing code that uses __.<br=
>
<br>
</span>_ is not reserved to the compiler and is VERY often #defined to gett=
ext.<br></blockquote><div><br></div><div>Only as a function-like macro.</di=
v><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">
Let's use __.</blockquote><div><br></div><div>Let's use the thing t=
hat works best for C++, sure. I am not (yet) convinced that's __.</div>=
<div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">At least we can point to V8=
developers and tell them it's their<br>
own fault.<br>
<span class=3D""><br>
--<br>
Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" rel=3D"noref=
errer" target=3D"_blank">macieira.info</a> - thiago (AT) <a href=3D"http://=
kde.org" rel=3D"noreferrer" target=3D"_blank">kde.org</a><br>
=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center<br>
<br>
</span><span class=3D"">--<br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals%2Bunsubscribe@isocpp.org">std-propo=
sals+unsubscribe@<wbr>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>
</span>To view this discussion on the web visit <a href=3D"https://groups.g=
oogle.com/a/isocpp.org/d/msgid/std-proposals/1491170458.9U0G8TLsOk%40tjmaci=
ei-mobl1" rel=3D"noreferrer" target=3D"_blank">https://groups.google.com/a/=
<wbr>isocpp.org/d/msgid/std-<wbr>proposals/1491170458.<wbr>9U0G8TLsOk%40tjm=
aciei-mobl1</a>.<br>
</blockquote></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" 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/CAOfiQqmkjfEqEQpbxWnaLfibTpRTKJdF2UN8=
M60pL38Qg5s43g%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">htt=
ps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAOfiQqmkjfEqEQpb=
xWnaLfibTpRTKJdF2UN8M60pL38Qg5s43g%40mail.gmail.com</a>.<br />
--001a114b43668063b9054c340d9b--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Sun, 2 Apr 2017 12:45:38 -0700 (PDT)
Raw View
------=_Part_6711_57837783.1491162338604
Content-Type: multipart/alternative;
boundary="----=_Part_6712_493131040.1491162338604"
------=_Part_6712_493131040.1491162338604
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Sunday, April 2, 2017 at 3:28:54 PM UTC-4, Richard Smith wrote:
>
> On 2 April 2017 at 11:03, Thiago Macieira <thi...@macieira.org=20
> <javascript:>> wrote:
>
>> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
>> > Have you considered that possibility? It would give a better name (_=
=20
>> rather
>> > than __) and avoid "breaking" existing code that uses __.
>>
>> _ is not reserved to the compiler and is VERY often #defined to gettext.
>>
>
> Only as a function-like macro.
>
> Let's use __.
>
>
> Let's use the thing that works best for C++, sure. I am not (yet)=20
> convinced that's __.
>
Well, let's look at the options.
You can't use nothing; that would create parsing ambiguities. So you have=
=20
to put something there: either an identifier or something that is not an=20
identifier.
If it is not an identifier, then it must be a keyword (new or old) or some=
=20
form of punctuation. Adding a new keyword for something like this is rather=
=20
silly. And I don't know of an old keyword that would make for a good=20
placeholder.
You could use `[]` as I once suggested, piggybacking off of structured=20
binding rules. But most other punctuation would be confusing or otherwise=
=20
unexpected in a variable declaration.
If it is an identifier, then it must be a *reserved* identifier, to=20
minimize code breakage when we change its meaning. The shortest reserved=20
identifier is `_`, which is currently reserved for use by the=20
implementation, but only for names in the global namespace. Which means=20
that right now, this is 100% legal:
namespace foo
{
constexpr int _ =3D 20;
}
So changing the meaning of that code is a non-starter.
The second shortest reserved identifiers are of the form `_*`, where `*` is=
=20
an uppercase letter or `_`. These are reserved by the implementation for *a=
ny=20
use*. And implementations are more easily changed than user code.
So from my perspective, `__` is the most viable identifier.
--=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/10c2c556-b6bb-4714-83bc-7b0ac8fd4143%40isocpp.or=
g.
------=_Part_6712_493131040.1491162338604
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Sunday, April 2, 2017 at 3:28:54 PM UTC-4, Richard Smit=
h wrote:<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">On 2 April 2017 at 11:03, Thiago Macieira <span =
dir=3D"ltr"><<a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-ma=
ilto=3D"WGTld1FVCQAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D'java=
script:';return true;" onclick=3D"this.href=3D'javascript:';ret=
urn true;">thi...@macieira.org</a>></span> wrote:<br><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex"><span>On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard=
Smith wrote:<br>
> Have you considered that possibility? It would give a better name (_ r=
ather<br>
> than __) and avoid "breaking" existing code that uses __.<br=
>
<br>
</span>_ is not reserved to the compiler and is VERY often #defined to gett=
ext.<br></blockquote><div><br></div><div>Only as a function-like macro.</di=
v><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">
Let's use __.</blockquote><div><br></div><div>Let's use the thing t=
hat works best for C++, sure. I am not (yet) convinced that's __.</div>=
</div></div></div></blockquote><div><br>Well, let's look at the options=
..<br><br>You can't use nothing; that would create parsing ambiguities. =
So you have to put something there: either an identifier or something that =
is not an identifier.<br><br>If it is not an identifier, then it must be a =
keyword (new or old) or some form of punctuation. Adding a new keyword for =
something like this is rather silly. And I don't know of an old keyword=
that would make for a good placeholder.<br><br>You could use `[]` as I onc=
e suggested, piggybacking off of structured binding rules. But most other p=
unctuation would be confusing or otherwise unexpected in a variable declara=
tion.<br><br>If it is an identifier, then it must be a <i>reserved</i> iden=
tifier, to minimize code breakage when we change its meaning. The shortest =
reserved identifier is `_`, which is currently reserved for use by the impl=
ementation, but only for names in the global namespace. Which means that ri=
ght now, this is 100% legal:<br><br><div style=3D"background-color: rgb(250=
, 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border-=
width: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=
=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;"=
class=3D"styled-by-prettify">namespace</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify"> foo<br></span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">{</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"><br>=C2=A0 </span><span style=3D"color: #008;" class=3D"s=
tyled-by-prettify">constexpr</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">int</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
"> _ </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><spa=
n style=3D"color: #066;" class=3D"styled-by-prettify">20</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">}</span></div></code></div><br>So changing =
the meaning of that code is a non-starter.<br><br>The second shortest reser=
ved identifiers are of the form `_*`, where `*` is an uppercase letter or `=
_`. These are reserved by the implementation for <i>any use</i>. And implem=
entations are more easily changed than user code.<br><br>So from my perspec=
tive, `__` is the most viable identifier.<br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/10c2c556-b6bb-4714-83bc-7b0ac8fd4143%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/10c2c556-b6bb-4714-83bc-7b0ac8fd4143=
%40isocpp.org</a>.<br />
------=_Part_6712_493131040.1491162338604--
------=_Part_6711_57837783.1491162338604--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Sun, 2 Apr 2017 21:56:01 +0200
Raw View
Il giorno 02 apr 2017, alle ore 20:03, Thiago Macieira <thiago@macieira.org=
> ha scritto:
>> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
>> Have you considered that possibility? It would give a better name (_ rat=
her
>> than __) and avoid "breaking" existing code that uses __.
>=20
> _ is not reserved to the compiler and is VERY often #defined to gettext.
Thank you Richard for your suggestion which is very interesting, since it p=
rovides good insights about a possible wording. As for the name, I believe =
Thiago and Magnus raised valid concerns, though. It's true that the we migh=
t choose _ without breaking existing code. However defining _ as a macro is=
currently valid and apparently widely used. I believe we therefore have on=
ly two choices: either we make such uses undefined behavior (upsetting a lo=
t of people) or we choose wording to avoid that (making the feature essenti=
ally unusable for users of all libraries like gettext). None of the two app=
roaches seems very good. Is there a third option?
__ seems somewhat safer and less controversial.
Alberto
--=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/170CB823-B63F-4910-A227-95C23314ADAD%40gmail.com=
..
.
Author: Richard Smith <richard@metafoo.co.uk>
Date: Sun, 2 Apr 2017 13:10:14 -0700
Raw View
--f403045cf79abbadda054c34a220
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On 2 April 2017 at 12:56, Alberto Barbati <albertobarbati@gmail.com> wrote:
> Il giorno 02 apr 2017, alle ore 20:03, Thiago Macieira <
> thiago@macieira.org> ha scritto:
>
> >> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
> >> Have you considered that possibility? It would give a better name (_
> rather
> >> than __) and avoid "breaking" existing code that uses __.
> >
> > _ is not reserved to the compiler and is VERY often #defined to gettext=
..
>
> Thank you Richard for your suggestion which is very interesting, since it
> provides good insights about a possible wording. As for the name, I belie=
ve
> Thiago and Magnus raised valid concerns, though. It's true that the we
> might choose _ without breaking existing code. However defining _ as a
> macro is currently valid and apparently widely used. I believe we therefo=
re
> have only two choices: either we make such uses undefined behavior
> (upsetting a lot of people) or we choose wording to avoid that (making th=
e
> feature essentially unusable for users of all libraries like gettext). No=
ne
> of the two approaches seems very good. Is there a third option?
>
As noted, gettext defines _ as a function-like macro, so there seems to be
no technical problem for users of gettext (although some might consider
overloading the meaning of _ in this way to be a readability problem).
__ seems somewhat safer and less controversial.
I would expect you'll find controversy if you pick a worse name in order to
avoid collision with a macro name that some would already consider to be
poorly chosen, so I don't think it's clear which will be less controversial=
..
--=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/CAOfiQqkRjs1jkgVrXLM8HA%2BXbkTJQ8oBoZh9XneTPCgB4=
AK7GQ%40mail.gmail.com.
--f403045cf79abbadda054c34a220
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On 2=
April 2017 at 12:56, Alberto Barbati <span dir=3D"ltr"><<a href=3D"mail=
to:albertobarbati@gmail.com" target=3D"_blank">albertobarbati@gmail.com</a>=
></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0=
0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span>Il giorno 02 apr=
2017, alle ore 20:03, Thiago Macieira <<a href=3D"mailto:thiago@macieir=
a.org" target=3D"_blank">thiago@macieira.org</a>> ha scritto:<br>
<br>
>> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrot=
e:<br>
>> Have you considered that possibility? It would give a better name =
(_ rather<br>
>> than __) and avoid "breaking" existing code that uses __=
..<br>
><br>
> _ is not reserved to the compiler and is VERY often #defined to gettex=
t.<br>
<br>
</span>Thank you Richard for your suggestion which is very interesting, sin=
ce it provides good insights about a possible wording. As for the name, I b=
elieve Thiago and Magnus raised valid concerns, though. It's true that =
the we might choose _ without breaking existing code. However defining _ as=
a macro is currently valid and apparently widely used. I believe we theref=
ore have only two choices: either we make such uses undefined behavior (ups=
etting a lot of people) or we choose wording to avoid that (making the feat=
ure essentially unusable for users of all libraries like gettext). None of =
the two approaches seems very good. Is there a third option?<br></blockquot=
e><div><br></div><div>As noted, gettext defines _ as a function-like macro,=
so there seems to be no technical problem for users of gettext (although s=
ome might consider overloading the meaning of _ in this way to be a readabi=
lity problem).</div><div><br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
__ seems somewhat safer and less controversial.</blockquote><div><br></div>=
<div>I would expect you'll find controversy if you pick a worse name in=
order to avoid collision with a macro name that some would already conside=
r to be poorly chosen, so I don't think it's clear which will be le=
ss controversial.</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" 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/CAOfiQqkRjs1jkgVrXLM8HA%2BXbkTJQ8oBoZ=
h9XneTPCgB4AK7GQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAOfiQqkRjs1jkg=
VrXLM8HA%2BXbkTJQ8oBoZh9XneTPCgB4AK7GQ%40mail.gmail.com</a>.<br />
--f403045cf79abbadda054c34a220--
.
Author: Richard Smith <richard@metafoo.co.uk>
Date: Sun, 2 Apr 2017 13:13:13 -0700
Raw View
--001a1143843c647b88054c34ad70
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On 2 April 2017 at 12:45, Nicol Bolas <jmckesson@gmail.com> wrote:
> On Sunday, April 2, 2017 at 3:28:54 PM UTC-4, Richard Smith wrote:
>>
>> On 2 April 2017 at 11:03, Thiago Macieira <thi...@macieira.org> wrote:
>>
>>> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
>>> > Have you considered that possibility? It would give a better name (_
>>> rather
>>> > than __) and avoid "breaking" existing code that uses __.
>>>
>>> _ is not reserved to the compiler and is VERY often #defined to gettext=
..
>>>
>>
>> Only as a function-like macro.
>>
>> Let's use __.
>>
>>
>> Let's use the thing that works best for C++, sure. I am not (yet)
>> convinced that's __.
>>
>
> Well, let's look at the options.
>
> You can't use nothing; that would create parsing ambiguities. So you have
> to put something there: either an identifier or something that is not an
> identifier.
>
> If it is not an identifier, then it must be a keyword (new or old) or som=
e
> form of punctuation. Adding a new keyword for something like this is rath=
er
> silly. And I don't know of an old keyword that would make for a good
> placeholder.
>
> You could use `[]` as I once suggested, piggybacking off of structured
> binding rules. But most other punctuation would be confusing or otherwise
> unexpected in a variable declaration.
>
> If it is an identifier, then it must be a *reserved* identifier, to
> minimize code breakage when we change its meaning.
>
As I pointed out, this is an incorrect conclusion. There is no necessity
for any code breakage here, and there is no need to pick a reserved
identifier: the core functionality of this proposal does not require that
the identifier be unusable within its scope, and if we don't add that
restriction, this is strictly an extension.
The shortest reserved identifier is `_`, which is currently reserved for
> use by the implementation, but only for names in the global namespace.
> Which means that right now, this is 100% legal:
>
> namespace foo
> {
> constexpr int _ =3D 20;
> }
>
> So changing the meaning of that code is a non-starter.
>
> The second shortest reserved identifiers are of the form `_*`, where `*`
> is an uppercase letter or `_`. These are reserved by the implementation f=
or *any
> use*. And implementations are more easily changed than user code.
>
> So from my perspective, `__` is the most viable identifier.
>
> --
> 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/10c2c556-b6bb-4714-
> 83bc-7b0ac8fd4143%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/10c2c556-b6=
bb-4714-83bc-7b0ac8fd4143%40isocpp.org?utm_medium=3Demail&utm_source=3Dfoot=
er>
> .
>
--=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/CAOfiQq%3DrWc3pUeEf3Jo-H-oGJQnyVvRwmqaOPYC7v2WJD=
MeHDg%40mail.gmail.com.
--001a1143843c647b88054c34ad70
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><div class=3D"gmail_quote">On 2=
April 2017 at 12:45, Nicol Bolas <span dir=3D"ltr"><<a href=3D"mailto:j=
mckesson@gmail.com" target=3D"_blank">jmckesson@gmail.com</a>></span> wr=
ote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border=
-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">On Sunday, April 2,=
2017 at 3:28:54 PM UTC-4, Richard Smith wrote:<span class=3D""><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_quot=
e">On 2 April 2017 at 11:03, Thiago Macieira <span dir=3D"ltr"><<a rel=
=3D"nofollow">thi...@macieira.org</a>></span> wrote:<br><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad=
ding-left:1ex"><span>On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richar=
d Smith wrote:<br>
> Have you considered that possibility? It would give a better name (_ r=
ather<br>
> than __) and avoid "breaking" existing code that uses __.<br=
>
<br>
</span>_ is not reserved to the compiler and is VERY often #defined to gett=
ext.<br></blockquote><div><br></div><div>Only as a function-like macro.</di=
v><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">
Let's use __.</blockquote><div><br></div><div>Let's use the thing t=
hat works best for C++, sure. I am not (yet) convinced that's __.</div>=
</div></div></div></blockquote></span><div><br>Well, let's look at the =
options.<br><br>You can't use nothing; that would create parsing ambigu=
ities. So you have to put something there: either an identifier or somethin=
g that is not an identifier.<br><br>If it is not an identifier, then it mus=
t be a keyword (new or old) or some form of punctuation. Adding a new keywo=
rd for something like this is rather silly. And I don't know of an old =
keyword that would make for a good placeholder.<br><br>You could use `[]` a=
s I once suggested, piggybacking off of structured binding rules. But most =
other punctuation would be confusing or otherwise unexpected in a variable =
declaration.<br><br>If it is an identifier, then it must be a <i>reserved</=
i> identifier, to minimize code breakage when we change its meaning.</div><=
/div></blockquote><div><br></div><div>As I pointed out, this is an incorrec=
t conclusion. There is no necessity for any code breakage here, and there i=
s no need to pick a reserved identifier: the core functionality of this pro=
posal does not require that the identifier be unusable within its scope, an=
d if we don't add that restriction, this is strictly an extension.</div=
><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8e=
x;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div>The sh=
ortest reserved identifier is `_`, which is currently reserved for use by t=
he implementation, but only for names in the global namespace. Which means =
that right now, this is 100% legal:<br><br><div style=3D"background-color:r=
gb(250,250,250);border-color:rgb(187,187,187);border-style:solid;border-wid=
th:1px" class=3D"m_6865967731990214384prettyprint"><code class=3D"m_6865967=
731990214384prettyprint"><div class=3D"m_6865967731990214384subprettyprint"=
><span style=3D"color:#008" class=3D"m_6865967731990214384styled-by-prettif=
y">namespace</span><span style=3D"color:#000" class=3D"m_686596773199021438=
4styled-by-prettify"> foo<br></span><span style=3D"color:#660" class=3D"m_6=
865967731990214384styled-by-prettify">{</span><span style=3D"color:#000" cl=
ass=3D"m_6865967731990214384styled-by-prettify"><br>=C2=A0 </span><span sty=
le=3D"color:#008" class=3D"m_6865967731990214384styled-by-prettify">constex=
pr</span><span style=3D"color:#000" class=3D"m_6865967731990214384styled-by=
-prettify"> </span><span style=3D"color:#008" class=3D"m_686596773199021438=
4styled-by-prettify">int</span><span style=3D"color:#000" class=3D"m_686596=
7731990214384styled-by-prettify"> _ </span><span style=3D"color:#660" class=
=3D"m_6865967731990214384styled-by-prettify">=3D</span><span style=3D"color=
:#000" class=3D"m_6865967731990214384styled-by-prettify"> </span><span styl=
e=3D"color:#066" class=3D"m_6865967731990214384styled-by-prettify">20</span=
><span style=3D"color:#660" class=3D"m_6865967731990214384styled-by-prettif=
y">;</span><span style=3D"color:#000" class=3D"m_6865967731990214384styled-=
by-prettify"><br></span><span style=3D"color:#660" class=3D"m_6865967731990=
214384styled-by-prettify">}</span></div></code></div><br>So changing the me=
aning of that code is a non-starter.<br><br>The second shortest reserved id=
entifiers are of the form `_*`, where `*` is an uppercase letter or `_`. Th=
ese are reserved by the implementation for <i>any use</i>. And implementati=
ons are more easily changed than user code.<br><br>So from my perspective, =
`__` is the most viable identifier.<br></div></div><span class=3D"">
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br></span>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/10c2c556-b6bb-4714-83bc-7b0ac8fd4143%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/10c2=
c556-b6bb-4714-<wbr>83bc-7b0ac8fd4143%40isocpp.org</a><wbr>.<br>
</blockquote></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" 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/CAOfiQq%3DrWc3pUeEf3Jo-H-oGJQnyVvRwmq=
aOPYC7v2WJDMeHDg%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAOfiQq%3DrWc3p=
UeEf3Jo-H-oGJQnyVvRwmqaOPYC7v2WJDMeHDg%40mail.gmail.com</a>.<br />
--001a1143843c647b88054c34ad70--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Sun, 2 Apr 2017 23:11:13 +0200
Raw View
--Apple-Mail=_6970A8FE-8A60-42EE-B1FE-085CB1337529
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
> Il giorno 02 apr 2017, alle ore 22:10, Richard Smith <richard@metafoo.co.=
uk> ha scritto:
>=20
> On 2 April 2017 at 12:56, Alberto Barbati <albertobarbati@gmail.com <mail=
to:albertobarbati@gmail.com>> wrote:
> Il giorno 02 apr 2017, alle ore 20:03, Thiago Macieira <thiago@macieira.o=
rg <mailto:thiago@macieira.org>> ha scritto:
>=20
> >> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
> >> Have you considered that possibility? It would give a better name (_ r=
ather
> >> than __) and avoid "breaking" existing code that uses __.
> >
> > _ is not reserved to the compiler and is VERY often #defined to gettext=
..
>=20
> Thank you Richard for your suggestion which is very interesting, since it=
provides good insights about a possible wording. As for the name, I believ=
e Thiago and Magnus raised valid concerns, though. It's true that the we mi=
ght choose _ without breaking existing code. However defining _ as a macro =
is currently valid and apparently widely used. I believe we therefore have =
only two choices: either we make such uses undefined behavior (upsetting a =
lot of people) or we choose wording to avoid that (making the feature essen=
tially unusable for users of all libraries like gettext). None of the two a=
pproaches seems very good. Is there a third option?
>=20
> As noted, gettext defines _ as a function-like macro, so there seems to b=
e no technical problem for users of gettext (although some might consider o=
verloading the meaning of _ in this way to be a readability problem).
I guess the proposal might use an assessment of the usage of _ as a macro n=
ame.
However, I am a bit worried about this:
unique_lock _ (mutex1); // ok, _ is an identifier
unique_lock _(mutex2); // ops! may not compile if I #include gettext
>=20
> __ seems somewhat safer and less controversial.
>=20
> I would expect you'll find controversy if you pick a worse name in order =
to avoid collision with a macro name that some would already consider to be=
poorly chosen, so I don't think it's clear which will be less controversia=
l.
Duly noted. By the way, I personally don=E2=80=99t think __ is much worse t=
han _. This seems very subjective to me.
Alberto
--=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/0E248E15-9ECD-4E5C-B38C-55417E91C276%40gmail.com=
..
--Apple-Mail=_6970A8FE-8A60-42EE-B1FE-085CB1337529
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"">Il giorno 02 apr 201=
7, alle ore 22:10, Richard Smith <<a href=3D"mailto:richard@metafoo.co.u=
k" class=3D"">richard@metafoo.co.uk</a>> ha scritto:</div><br class=3D"A=
pple-interchange-newline"><div class=3D""><div dir=3D"ltr" class=3D""><div =
class=3D"gmail_extra"><div class=3D"gmail_quote">On 2 April 2017 at 12:56, =
Alberto Barbati <span dir=3D"ltr" class=3D""><<a href=3D"mailto:albertob=
arbati@gmail.com" target=3D"_blank" class=3D"">albertobarbati@gmail.com</a>=
></span> wrote:<br class=3D""><blockquote class=3D"gmail_quote" style=3D=
"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=
=3D"">Il giorno 02 apr 2017, alle ore 20:03, Thiago Macieira <<a href=3D=
"mailto:thiago@macieira.org" target=3D"_blank" class=3D"">thiago@macieira.o=
rg</a>> ha scritto:<br class=3D"">
<br class=3D"">
>> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrot=
e:<br class=3D"">
>> Have you considered that possibility? It would give a better name =
(_ rather<br class=3D"">
>> than __) and avoid "breaking" existing code that uses __.<br class=
=3D"">
><br class=3D"">
> _ is not reserved to the compiler and is VERY often #defined to gettex=
t.<br class=3D"">
<br class=3D"">
</span>Thank you Richard for your suggestion which is very interesting, sin=
ce it provides good insights about a possible wording. As for the name, I b=
elieve Thiago and Magnus raised valid concerns, though. It's true that the =
we might choose _ without breaking existing code. However defining _ as a m=
acro is currently valid and apparently widely used. I believe we therefore =
have only two choices: either we make such uses undefined behavior (upsetti=
ng a lot of people) or we choose wording to avoid that (making the feature =
essentially unusable for users of all libraries like gettext). None of the =
two approaches seems very good. Is there a third option?<br class=3D""></bl=
ockquote><div class=3D""><br class=3D""></div><div class=3D"">As noted, get=
text defines _ as a function-like macro, so there seems to be no technical =
problem for users of gettext (although some might consider overloading the =
meaning of _ in this way to be a readability problem).</div></div></div></d=
iv></div></blockquote><div><br class=3D""></div><div>I guess the proposal m=
ight use an assessment of the usage of _ as a macro name.</div><div><br cla=
ss=3D""></div><div>However, I am a bit worried about this:</div><div><br cl=
ass=3D""></div><div> unique_lock _ (mutex1); // ok, _ is an identifie=
r</div><div> unique_lock _(mutex2); // ops! may not compile if I #inc=
lude gettext</div><div><br class=3D""></div><blockquote type=3D"cite" class=
=3D""><div class=3D""><div dir=3D"ltr" class=3D""><div class=3D"gmail_extra=
"><div class=3D"gmail_quote"><div class=3D""><br class=3D""></div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc so=
lid;padding-left:1ex">
__ seems somewhat safer and less controversial.</blockquote><div class=3D""=
><br class=3D""></div><div class=3D"">I would expect you'll find controvers=
y if you pick a worse name in order to avoid collision with a macro name th=
at some would already consider to be poorly chosen, so I don't think it's c=
lear which will be less controversial.</div></div></div></div></div></block=
quote><br class=3D""></div><div>Duly noted. By the way, I personally don=E2=
=80=99t think __ is much worse than _. This seems very subjective to me.</d=
iv><div><br class=3D""></div><div>Alberto</div><br class=3D""></body></html=
>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/0E248E15-9ECD-4E5C-B38C-55417E91C276%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/0E248E15-9ECD-4E5C-B38C-55417E91C276%=
40gmail.com</a>.<br />
--Apple-Mail=_6970A8FE-8A60-42EE-B1FE-085CB1337529--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Sun, 2 Apr 2017 15:45:49 -0700 (PDT)
Raw View
------=_Part_3712_144089446.1491173149922
Content-Type: multipart/alternative;
boundary="----=_Part_3713_2138178914.1491173149922"
------=_Part_3713_2138178914.1491173149922
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Sunday, April 2, 2017 at 4:13:36 PM UTC-4, Richard Smith wrote:
>
> On 2 April 2017 at 12:45, Nicol Bolas <jmck...@gmail.com <javascript:>>=
=20
> wrote:
>
>> On Sunday, April 2, 2017 at 3:28:54 PM UTC-4, Richard Smith wrote:
>>>
>>> On 2 April 2017 at 11:03, Thiago Macieira <thi...@macieira.org> wrote:
>>>
>>>> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
>>>> > Have you considered that possibility? It would give a better name (_=
=20
>>>> rather
>>>> > than __) and avoid "breaking" existing code that uses __.
>>>>
>>>> _ is not reserved to the compiler and is VERY often #defined to gettex=
t.
>>>>
>>>
>>> Only as a function-like macro.
>>>
>>> Let's use __.
>>>
>>>
>>> Let's use the thing that works best for C++, sure. I am not (yet)=20
>>> convinced that's __.
>>>
>>
>> Well, let's look at the options.
>>
>> You can't use nothing; that would create parsing ambiguities. So you hav=
e=20
>> to put something there: either an identifier or something that is not an=
=20
>> identifier.
>>
>> If it is not an identifier, then it must be a keyword (new or old) or=20
>> some form of punctuation. Adding a new keyword for something like this i=
s=20
>> rather silly. And I don't know of an old keyword that would make for a g=
ood=20
>> placeholder.
>>
>> You could use `[]` as I once suggested, piggybacking off of structured=
=20
>> binding rules. But most other punctuation would be confusing or otherwis=
e=20
>> unexpected in a variable declaration.
>>
>> If it is an identifier, then it must be a *reserved* identifier, to=20
>> minimize code breakage when we change its meaning.
>>
>
> As I pointed out, this is an incorrect conclusion. There is no necessity=
=20
> for any code breakage here, and there is no need to pick a reserved=20
> identifier: the core functionality of this proposal does not require that=
=20
> the identifier be unusable within its scope, and if we don't add that=20
> restriction, this is strictly an extension.
>
But that makes it a *different proposal*. This proposal is about having a=
=20
scope-bound object which *cannot be later referenced*, which has a name=20
that is generated by the compiler. That's what the proposal is for: "for=20
all variables whose name is not important and that is no longer needed=20
after declaration".
You are talking about something else.
--=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/5d35116c-5974-417a-840f-3dc714eae601%40isocpp.or=
g.
------=_Part_3713_2138178914.1491173149922
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Sunday, April 2, 2017 at 4:13:36 PM UTC-4, Richard Smit=
h wrote:<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">On 2 April 2017 at 12:45, Nicol Bolas <span dir=
=3D"ltr"><<a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailt=
o=3D"lUG55sFXCQAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D'javascr=
ipt:';return true;" onclick=3D"this.href=3D'javascript:';return=
true;">jmck...@gmail.com</a>></span> wrote:<br><blockquote class=3D"gma=
il_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-lef=
t:1ex"><div dir=3D"ltr">On Sunday, April 2, 2017 at 3:28:54 PM UTC-4, Richa=
rd Smith wrote:<span><blockquote class=3D"gmail_quote" style=3D"margin:0;ma=
rgin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"lt=
r"><div><div class=3D"gmail_quote">On 2 April 2017 at 11:03, Thiago Macieir=
a <span dir=3D"ltr"><<a rel=3D"nofollow">thi...@macieira.org</a>></sp=
an> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex"><span>On s=C3=A1bado, 1 de abr=
il de 2017 21:19:37 PDT Richard Smith wrote:<br>
> Have you considered that possibility? It would give a better name (_ r=
ather<br>
> than __) and avoid "breaking" existing code that uses __.<br=
>
<br>
</span>_ is not reserved to the compiler and is VERY often #defined to gett=
ext.<br></blockquote><div><br></div><div>Only as a function-like macro.</di=
v><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex">
Let's use __.</blockquote><div><br></div><div>Let's use the thing t=
hat works best for C++, sure. I am not (yet) convinced that's __.</div>=
</div></div></div></blockquote></span><div><br>Well, let's look at the =
options.<br><br>You can't use nothing; that would create parsing ambigu=
ities. So you have to put something there: either an identifier or somethin=
g that is not an identifier.<br><br>If it is not an identifier, then it mus=
t be a keyword (new or old) or some form of punctuation. Adding a new keywo=
rd for something like this is rather silly. And I don't know of an old =
keyword that would make for a good placeholder.<br><br>You could use `[]` a=
s I once suggested, piggybacking off of structured binding rules. But most =
other punctuation would be confusing or otherwise unexpected in a variable =
declaration.<br><br>If it is an identifier, then it must be a <i>reserved</=
i> identifier, to minimize code breakage when we change its meaning.</div><=
/div></blockquote><div><br></div><div>As I pointed out, this is an incorrec=
t conclusion. There is no necessity for any code breakage here, and there i=
s no need to pick a reserved identifier: the core functionality of this pro=
posal does not require that the identifier be unusable within its scope, an=
d if we don't add that restriction, this is strictly an extension.</div=
></div></div></div></blockquote><div><br>But that makes it a <i>different p=
roposal</i>. This proposal is about having a scope-bound object which <i>ca=
nnot be later referenced</i>, which has a name that is generated by the com=
piler. That's what the proposal is for: "for all variables whose n=
ame is not important and that is no longer needed after declaration".<=
br><br>You are talking about something else.</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/5d35116c-5974-417a-840f-3dc714eae601%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/5d35116c-5974-417a-840f-3dc714eae601=
%40isocpp.org</a>.<br />
------=_Part_3713_2138178914.1491173149922--
------=_Part_3712_144089446.1491173149922--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Sun, 2 Apr 2017 15:50:50 -0700 (PDT)
Raw View
------=_Part_5936_1928593301.1491173450884
Content-Type: multipart/alternative;
boundary="----=_Part_5937_48829538.1491173450884"
------=_Part_5937_48829538.1491173450884
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Sunday, April 2, 2017 at 4:10:38 PM UTC-4, Richard Smith wrote:
>
> On 2 April 2017 at 12:56, Alberto Barbati <alberto...@gmail.com=20
> <javascript:>> wrote:
>
>> Il giorno 02 apr 2017, alle ore 20:03, Thiago Macieira <
>> thi...@macieira.org <javascript:>> ha scritto:
>>
>> >> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrote:
>> >> Have you considered that possibility? It would give a better name (_=
=20
>> rather
>> >> than __) and avoid "breaking" existing code that uses __.
>> >
>> > _ is not reserved to the compiler and is VERY often #defined to gettex=
t.
>>
>> Thank you Richard for your suggestion which is very interesting, since i=
t=20
>> provides good insights about a possible wording. As for the name, I beli=
eve=20
>> Thiago and Magnus raised valid concerns, though. It's true that the we=
=20
>> might choose _ without breaking existing code. However defining _ as a=
=20
>> macro is currently valid and apparently widely used. I believe we theref=
ore=20
>> have only two choices: either we make such uses undefined behavior=20
>> (upsetting a lot of people) or we choose wording to avoid that (making t=
he=20
>> feature essentially unusable for users of all libraries like gettext). N=
one=20
>> of the two approaches seems very good. Is there a third option?
>>
>
> As noted, gettext defines _ as a function-like macro, so there seems to b=
e=20
> no technical problem for users of gettext (although some might consider=
=20
> overloading the meaning of _ in this way to be a readability problem).
>
But we can't do that. As previously mentioned, this does break valid code:
namespace Name
{
int _ =3D 5;
};
`_` is only reserved for implementation use in the global namespace. That=
=20
name is not in a global namespace, so it's perfectly fine for users to use=
=20
it.
Using it for this feature would change this code, such that the variable is=
=20
no longer accessible.
__ seems somewhat safer and less controversial.
>
>
> I would expect you'll find controversy if you pick a worse name in order=
=20
> to avoid collision with a macro name that some would already consider to =
be=20
> poorly chosen, so I don't think it's clear which will be less controversi=
al.
>
I've yet to see evidence that `__` is in any technical way worse than `_`.
--=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/cc7b0dfd-38c5-4bfc-b0d4-7a3d2fe81ef6%40isocpp.or=
g.
------=_Part_5937_48829538.1491173450884
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Sunday, April 2, 2017 at 4:10:38 PM UTC-4, Rich=
ard Smith wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin=
-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"lt=
r"><div><div class=3D"gmail_quote">On 2 April 2017 at 12:56, Alberto Barbat=
i <span dir=3D"ltr"><<a href=3D"javascript:" target=3D"_blank" gdf-obfus=
cated-mailto=3D"AIL6XZhXCQAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D&=
#39;javascript:';return true;" onclick=3D"this.href=3D'javascript:&=
#39;;return true;">alberto...@gmail.com</a>></span> wrote:<br><blockquot=
e class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc sol=
id;padding-left:1ex"><span>Il giorno 02 apr 2017, alle ore 20:03, Thiago Ma=
cieira <<a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=
=3D"AIL6XZhXCQAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D'javascri=
pt:';return true;" onclick=3D"this.href=3D'javascript:';return =
true;">thi...@macieira.org</a>> ha scritto:<br>
<br>
>> On s=C3=A1bado, 1 de abril de 2017 21:19:37 PDT Richard Smith wrot=
e:<br>
>> Have you considered that possibility? It would give a better name =
(_ rather<br>
>> than __) and avoid "breaking" existing code that uses __=
..<br>
><br>
> _ is not reserved to the compiler and is VERY often #defined to gettex=
t.<br>
<br>
</span>Thank you Richard for your suggestion which is very interesting, sin=
ce it provides good insights about a possible wording. As for the name, I b=
elieve Thiago and Magnus raised valid concerns, though. It's true that =
the we might choose _ without breaking existing code. However defining _ as=
a macro is currently valid and apparently widely used. I believe we theref=
ore have only two choices: either we make such uses undefined behavior (ups=
etting a lot of people) or we choose wording to avoid that (making the feat=
ure essentially unusable for users of all libraries like gettext). None of =
the two approaches seems very good. Is there a third option?<br></blockquot=
e><div><br></div><div>As noted, gettext defines _ as a function-like macro,=
so there seems to be no technical problem for users of gettext (although s=
ome might consider overloading the meaning of _ in this way to be a readabi=
lity problem).</div></div></div></div></blockquote><div><br>But we can'=
t do that. As previously mentioned, this does break valid code:<br><br><div=
style=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187,=
187); border-style: solid; border-width: 1px; overflow-wrap: break-word;" =
class=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettypr=
int"><span style=3D"color: #008;" class=3D"styled-by-prettify">namespace</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span=
style=3D"color: #606;" class=3D"styled-by-prettify">Name</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">{</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"><br>=C2=A0 </span><span style=3D"color: #00=
8;" class=3D"styled-by-prettify">int</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> _ </span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"> </span><span style=3D"color: #066;" class=3D"styled-by-prettif=
y">5</span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">};</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><br></span></div></code></di=
v><br>`_` is only reserved for implementation use in the global namespace. =
That name is not in a global namespace, so it's perfectly fine for user=
s to use it.<br><br>Using it for this feature would change this code, such =
that the variable is no longer accessible.<br><br></div><blockquote class=
=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #cc=
c solid;padding-left: 1ex;"><div dir=3D"ltr"><div><div class=3D"gmail_quote=
"><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:=
1px #ccc solid;padding-left:1ex">
__ seems somewhat safer and less controversial.</blockquote><div><br></div>=
<div>I would expect you'll find controversy if you pick a worse name in=
order to avoid collision with a macro name that some would already conside=
r to be poorly chosen, so I don't think it's clear which will be le=
ss controversial.</div></div></div></div></blockquote><div><br>I've yet=
to see evidence that `__` is in any technical way worse than `_`.<br></div=
></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/cc7b0dfd-38c5-4bfc-b0d4-7a3d2fe81ef6%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/cc7b0dfd-38c5-4bfc-b0d4-7a3d2fe81ef6=
%40isocpp.org</a>.<br />
------=_Part_5937_48829538.1491173450884--
------=_Part_5936_1928593301.1491173450884--
.
Author: Thiago Macieira <thiago@macieira.org>
Date: Sun, 02 Apr 2017 20:48:15 -0700
Raw View
On domingo, 2 de abril de 2017 13:10:14 PDT Richard Smith wrote:
> As noted, gettext defines _ as a function-like macro,
Even as a function-like macro, it wouldn't work:
std::lock_guard _(mutex);
--
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
Software Architect - Intel Open Source Technology Center
--
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/5794086.eP5PKezJ9P%40tjmaciei-mobl1.
.
Author: Barry Revzin <barry.revzin@gmail.com>
Date: Mon, 3 Apr 2017 12:37:28 -0700 (PDT)
Raw View
------=_Part_816_156274550.1491248248106
Content-Type: multipart/alternative;
boundary="----=_Part_817_810417299.1491248248106"
------=_Part_817_810417299.1491248248106
Content-Type: text/plain; charset=UTF-8
>
>
>> If it is an identifier, then it must be a *reserved* identifier, to
>> minimize code breakage when we change its meaning.
>>
>
> As I pointed out, this is an incorrect conclusion. There is no necessity
> for any code breakage here, and there is no need to pick a reserved
> identifier: the core functionality of this proposal does not require that
> the identifier be unusable within its scope, and if we don't add that
> restriction, this is strictly an extension.
>
>
I think the logical extreme of this idea is to not pick any identifier at
all - simply allow hiding declarations in the same scope. So from the
original paper's examples, using __ to declare multiple variables in the
same scope just works not because of some special magic bestowed upon the
identifier "__", but instead because you're actually declaring multiple
variables in the same scope named "__". You'd have no way of accessing the
earlier versions of __, but then you don't want to anyway. I don't know how
to get the compiler to not warn against not using the last incarnation of
__ though. That just may be a "teach the compiler that this is a convention
that people want to use" kind of thing.
We'd have to change the scope rules for names, but I'm not sure that's any
worse than bestowing magic language meaning on a specific identifier.
--
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/1380e942-6c0c-4bae-9042-d3e5064e96d8%40isocpp.org.
------=_Part_817_810417299.1491248248106
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><blockquote class=3D"gmail_quote" style=3D"margin: 0;margi=
n-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"l=
tr"><div><div class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=
=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=
=3D"ltr"><div><br>If it is an identifier, then it must be a <i>reserved</i>=
identifier, to minimize code breakage when we change its meaning.</div></d=
iv></blockquote><div><br></div><div>As I pointed out, this is an incorrect =
conclusion. There is no necessity for any code breakage here, and there is =
no need to pick a reserved identifier: the core functionality of this propo=
sal does not require that the identifier be unusable within its scope, and =
if we don't add that restriction, this is strictly an extension.</div><=
div><br></div></div></div></div></blockquote><div><br></div><div>I think th=
e logical extreme of this idea is to not pick any identifier at all - simpl=
y allow hiding declarations in the same scope. So from the original paper&#=
39;s examples, using __ to declare multiple variables in the same scope jus=
t works not because of some special magic bestowed upon the identifier &quo=
t;__", but instead because you're actually declaring multiple vari=
ables in the same scope named "__". You'd have no way of acce=
ssing the earlier versions of __, but then you don't want to anyway. I =
don't know how to get the compiler to not warn against not using the la=
st incarnation of __ though. That just may be a "teach the compiler th=
at this is a convention that people want to use" kind of thing.=C2=A0<=
/div><div><br></div><div>We'd have to change the scope rules for names,=
but I'm not sure that's any worse than bestowing magic language me=
aning on a specific identifier.=C2=A0</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/1380e942-6c0c-4bae-9042-d3e5064e96d8%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/1380e942-6c0c-4bae-9042-d3e5064e96d8=
%40isocpp.org</a>.<br />
------=_Part_817_810417299.1491248248106--
------=_Part_816_156274550.1491248248106--
.
Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Mon, 3 Apr 2017 15:55:12 -0400
Raw View
On 2017-04-03 15:37, Barry Revzin wrote:
> I think the logical extreme of this idea is to not pick any identifier at
> all - simply allow hiding declarations in the same scope. So from the
> original paper's examples, using __ to declare multiple variables in the
> same scope just works not because of some special magic bestowed upon the
> identifier "__", but instead because you're actually declaring multiple
> variables in the same scope named "__". You'd have no way of accessing the
> earlier versions of __, but then you don't want to anyway. I don't know how
> to get the compiler to not warn against not using the last incarnation of
> __ though. That just may be a "teach the compiler that this is a convention
> that people want to use" kind of thing.
That seems like a recipe for bugs. We have enough problems with -Wshadow
as it is, let alone making the situation *worse*...
--
Matthew
--
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/58E2A8A0.3010100%40gmail.com.
.
Author: "T. C." <rs2740@gmail.com>
Date: Mon, 3 Apr 2017 13:28:56 -0700 (PDT)
Raw View
------=_Part_961_1759207746.1491251336906
Content-Type: multipart/alternative;
boundary="----=_Part_962_1813769586.1491251336907"
------=_Part_962_1813769586.1491251336907
Content-Type: text/plain; charset=UTF-8
On Monday, April 3, 2017 at 3:55:16 PM UTC-4, Matthew Woehlke wrote:
>
> On 2017-04-03 15:37, Barry Revzin wrote:
> > I think the logical extreme of this idea is to not pick any identifier
> at
> > all - simply allow hiding declarations in the same scope. So from the
> > original paper's examples, using __ to declare multiple variables in the
> > same scope just works not because of some special magic bestowed upon
> the
> > identifier "__", but instead because you're actually declaring multiple
> > variables in the same scope named "__". You'd have no way of accessing
> the
> > earlier versions of __, but then you don't want to anyway. I don't know
> how
> > to get the compiler to not warn against not using the last incarnation
> of
> > __ though. That just may be a "teach the compiler that this is a
> convention
> > that people want to use" kind of thing.
>
> That seems like a recipe for bugs. We have enough problems with -Wshadow
> as it is, let alone making the situation *worse*...
>
>
I think the original idea Richard posited is that there is no hiding.
Instead, if you declare multiple variables with the same name in the same
scope, you can't access *any* of them. Name lookup will simply find all the
declarations and declare an ambiguity at that point.
--
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/665b5031-843b-4c30-8bb1-ced918c10656%40isocpp.org.
------=_Part_962_1813769586.1491251336907
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Monday, April 3, 2017 at 3:55:16 PM UTC-4, Matt=
hew Woehlke wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;marg=
in-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On 2017-04-0=
3 15:37, Barry Revzin wrote:
<br>> I think the logical extreme of this idea is to not pick any identi=
fier at=20
<br>> all - simply allow hiding declarations in the same scope. So from =
the=20
<br>> original paper's examples, using __ to declare multiple variab=
les in the=20
<br>> same scope just works not because of some special magic bestowed u=
pon the=20
<br>> identifier "__", but instead because you're actually=
declaring multiple=20
<br>> variables in the same scope named "__". You'd have n=
o way of accessing the=20
<br>> earlier versions of __, but then you don't want to anyway. I d=
on't know how=20
<br>> to get the compiler to not warn against not using the last incarna=
tion of=20
<br>> __ though. That just may be a "teach the compiler that this i=
s a convention=20
<br>> that people want to use" kind of thing.=20
<br>
<br>That seems like a recipe for bugs. We have enough problems with -Wshado=
w
<br>as it is, let alone making the situation *worse*...
<br>
<br></blockquote><div><br></div><div>I think the original idea Richard posi=
ted is that there is no hiding. Instead, if you declare multiple variables =
with the same name in the same scope, you can't access *any* of them. N=
ame lookup will simply find all the declarations and declare an ambiguity a=
t that point.</div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/665b5031-843b-4c30-8bb1-ced918c10656%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/665b5031-843b-4c30-8bb1-ced918c10656=
%40isocpp.org</a>.<br />
------=_Part_962_1813769586.1491251336907--
------=_Part_961_1759207746.1491251336906--
.
Author: Derek Ross <antiquarktv@gmail.com>
Date: Wed, 5 Apr 2017 08:06:14 -0700 (PDT)
Raw View
------=_Part_12723_894608244.1491404775044
Content-Type: multipart/alternative;
boundary="----=_Part_12724_1449941785.1491404775044"
------=_Part_12724_1449941785.1491404775044
Content-Type: text/plain; charset=UTF-8
Maybe an existing keyword could be used instead. Something like:
unique_lock auto {lock};
or
unique_lock default {lock};
or some other keyword.
On Monday, March 27, 2017 at 3:27:11 PM UTC-5, Alberto Barbati wrote:
>
> Hello,
>
> this is a draft for a proposal to add a special meaning to the identifier
> __ (double underscore) so that it can be used (even repeatedly in the same
> lexical scope) for all variables whose name is not important and that is no
> longer needed after declaration. The draft includes a few examples.
>
> Is there any interest in this?
>
> Thanks in advance,
>
> Alberto
>
>
--
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/590a8990-feca-4685-8707-ccaf2785af56%40isocpp.org.
------=_Part_12724_1449941785.1491404775044
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Maybe an existing keyword could be used instead. Something=
like: <br><div style=3D"background-color: rgb(250, 250, 250); border-color=
: rgb(187, 187, 187); border-style: solid; border-width: 1px; overflow-wrap=
: break-word;" class=3D"prettyprint"><code class=3D"prettyprint"><div class=
=3D"subprettyprint"><span style=3D"color: #000;" class=3D"styled-by-prettif=
y">=C2=A0 =C2=A0 unique_lock </span><span style=3D"color: #008;" class=3D"s=
tyled-by-prettify">auto</span><span style=3D"color: #000;" class=3D"styled-=
by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">{</span><span style=3D"color: #008;" class=3D"styled-by-prettify">lock<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">};</span></=
div></code></div>or<br><div style=3D"background-color: rgb(250, 250, 250); =
border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; o=
verflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"prettyprint=
"><div class=3D"subprettyprint"><span style=3D"color: #000;" class=3D"style=
d-by-prettify">=C2=A0 =C2=A0 unique_lock </span><span style=3D"color: #008;=
" class=3D"styled-by-prettify">default</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">{</span><span style=3D"color: #008;" class=3D"styled-by-=
prettify">lock</span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">};</span></div></code></div><br>or some other keyword. <br><br>On Monda=
y, March 27, 2017 at 3:27:11 PM UTC-5, Alberto Barbati wrote:<blockquote cl=
ass=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px =
#ccc solid;padding-left: 1ex;"><div dir=3D"ltr">Hello,<br><br>this is a dra=
ft for a proposal to add a special meaning to the identifier __ (double und=
erscore) so that it can be used (even repeatedly in the same lexical scope)=
for all variables whose name is not important and that is no longer needed=
after declaration. The draft includes a few examples.<br><br>Is there any =
interest in this?<br><br>Thanks in advance,<br><br>Alberto<br><br></div></b=
lockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/590a8990-feca-4685-8707-ccaf2785af56%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/590a8990-feca-4685-8707-ccaf2785af56=
%40isocpp.org</a>.<br />
------=_Part_12724_1449941785.1491404775044--
------=_Part_12723_894608244.1491404775044--
.
Author: hun.nemethpeter@gmail.com
Date: Wed, 5 Apr 2017 08:22:12 -0700 (PDT)
Raw View
------=_Part_2229_1893869081.1491405732814
Content-Type: multipart/alternative;
boundary="----=_Part_2230_1395577018.1491405732814"
------=_Part_2230_1395577018.1491405732814
Content-Type: text/plain; charset=UTF-8
Was a #unique-id, #id or #__ preprocessor like syntax considered before
for this reason?
void demo_scope_exit_fail_success()
{
std::ostringstream out {};
auto lam = [&]{out << "called ";};
try{
scope_exit *#id* {[&]{out << "always ";}};
scope_success *#unique_id* {[&]{out << "not ";}};
scope_fail *#__* {lam};
...
Peter
On Monday, March 27, 2017 at 10:27:11 PM UTC+2, Alberto Barbati wrote:
>
> Hello,
>
> this is a draft for a proposal to add a special meaning to the identifier
> __ (double underscore) so that it can be used (even repeatedly in the same
> lexical scope) for all variables whose name is not important and that is no
> longer needed after declaration. The draft includes a few examples.
>
> Is there any interest in this?
>
> Thanks in advance,
>
> Alberto
>
>
--
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/5adfacfe-d720-403f-9fef-258d1daa8a40%40isocpp.org.
------=_Part_2230_1395577018.1491405732814
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">Was a <font face=3D"courier new, monospace">#unique-id,</f=
ont>=C2=A0=C2=A0<font face=3D"courier new, monospace">#id</font>=C2=A0 or <=
font face=3D"courier new, monospace">#__</font> preprocessor like syntax co=
nsidered before for this reason?<div><br></div><div><font face=3D"courier n=
ew, monospace">void demo_scope_exit_fail_success()<br>{<br>=C2=A0std::ostri=
ngstream out {};<br>=C2=A0auto lam =3D [&]{out << "called &q=
uot;;};<br>=C2=A0try{<br>=C2=A0 =C2=A0scope_exit =C2=A0 =C2=A0 <b>#id</b>=
=C2=A0{[&]{out << "always ";}};<br>=C2=A0 =C2=A0scope_s=
uccess =C2=A0<b>#unique_id</b>=C2=A0{[&]{out << "not ";=
}};<br>=C2=A0 =C2=A0scope_fail =C2=A0 =C2=A0 <b>#__</b>=C2=A0{lam};</font><=
/div><div><font face=3D"courier new, monospace">=C2=A0 =C2=A0...<br></font>=
<div><div><br></div></div><div><br></div><div>Peter<br><br>On Monday, March=
27, 2017 at 10:27:11 PM UTC+2, Alberto Barbati wrote:<blockquote class=3D"=
gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc so=
lid;padding-left: 1ex;"><div dir=3D"ltr">Hello,<br><br>this is a draft for =
a proposal to add a special meaning to the identifier __ (double underscore=
) so that it can be used (even repeatedly in the same lexical scope) for al=
l variables whose name is not important and that is no longer needed after =
declaration. The draft includes a few examples.<br><br>Is there any interes=
t in this?<br><br>Thanks in advance,<br><br>Alberto<br><br></div></blockquo=
te></div></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/5adfacfe-d720-403f-9fef-258d1daa8a40%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/5adfacfe-d720-403f-9fef-258d1daa8a40=
%40isocpp.org</a>.<br />
------=_Part_2230_1395577018.1491405732814--
------=_Part_2229_1893869081.1491405732814--
.
Author: Alberto Barbati <albertobarbati@gmail.com>
Date: Mon, 10 Apr 2017 01:10:28 +0200
Raw View
--Apple-Mail-9039065D-5340-4B7E-AA1B-4792184C8414
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
> Il giorno 03 apr 2017, alle ore 00:45, Nicol Bolas <jmckesson@gmail.com> =
ha scritto:
>=20
> This proposal is about having a scope-bound object which cannot be later =
referenced, which has a name that is generated by the compiler. That's what=
the proposal is for: "for all variables whose name is not important and th=
at is no longer needed after declaration".
Sorry to have left the thread for so long. After some pondering, although t=
he __ approach is still on the table, I have decided to explore a bit furth=
er other options that do not require reserving an identifier, in particular=
the one suggested by Nicol Bolas. The fact is that I realized C++17 alread=
y has a tool that creates an object that cannot be referenced... that tool=
is decomposition declaration itself. With just three tweaks, which would m=
ake for a pure extension, we can achieve both goals of my proposal.
Tweak #1
Allow identifiers in a decomposition declaration to be omitted. So in
auto [x, , z] =3D func();
the second element is not named so the corresponding element needs not be b=
ound and get<1>() is guaranteed not to be called (however, we might still c=
heck that it might have been called, for consistency).
This tweak alone solves goal #2 of the proposal and is probably more elegan=
t: since there's no name, there's little room for misunderstanding about th=
e semantic.
Tweak #2
Make [] a special case by allowing it for all types: in this particular cas=
e, tuple_size<>, tuple_element<> and get<>() functions are not required no=
r called. We would therefore be able to write:
auto [] =3D lock_guard{m};
even if lock_guard does not have a tuple-like interface. This actually solv=
es goal #1! In fact, the declaration instantiate the "hidden" object, which=
is destroyed at the end of scope, as usual. It simply doesn't bind it to =
a name.
There's only one drawback: since decomposition declarations mandate the use=
of auto, the syntax seems unnecessarily verbose.
Tweak #3
Allow the decl-specifier-seq in a decomposition declaration to be different=
from auto. This would allow to write the code above more concisely:
lock_guard [] {m};
Incidentally, this tweak would provide greater control over "normal" decomp=
osition declarations too, giving a concise syntax to coerce the type of the=
hidden object.
Tweak #3 is probably the most problematic part. I admit I didn't follow the=
discussion that brought to the current wording of decomposition declaratio=
ns, but I'm sure it has been discussed before and if there weren't problems=
it would probably have been allowed already. If anyone has pointers to sha=
re about that they are definitely welcome.
Alberto
--=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/FA395A70-558A-44D9-9EF5-6DF0385D3D3A%40gmail.com=
..
--Apple-Mail-9039065D-5340-4B7E-AA1B-4792184C8414
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><span></span></div><div><meta http=
-equiv=3D"content-type" content=3D"text/html; charset=3Dutf-8"><div><span><=
/span></div><div><meta http-equiv=3D"content-type" content=3D"text/html; ch=
arset=3Dutf-8"><div></div><div><br></div><div>Il giorno 03 apr 2017, alle o=
re 00:45, Nicol Bolas <<a href=3D"mailto:jmckesson@gmail.com">jmckesson@=
gmail.com</a>> ha scritto:<br><br></div><blockquote type=3D"cite"><div>T=
his proposal is about having a scope-bound object which <i>cannot be later =
referenced</i>, which has a name that is generated by the compiler. That's =
what the proposal is for: "for all variables whose name is not important an=
d that is no longer needed after declaration".</div></blockquote><br><div>S=
orry to have left the thread for so long. After some pondering, although th=
e __ approach is still on the table, I have decided to explore a bit furthe=
r other options that do not require reserving an identifier, in particular =
the one suggested by Nicol Bolas. The fact is that I realized C++17 already=
has a tool that creates an object that cannot be referenced... that =
tool is decomposition declaration itself. With just three tweaks, which wou=
ld make for a pure extension, we can achieve both goals of my proposal.</di=
v><div><br></div><div>Tweak #1</div><div><br></div><div>Allow identifiers i=
n a decomposition declaration to be omitted. So in</div><div><br></div><div=
> auto [x, , z] =3D func();</div><div><br></div><div>the secon=
d element is not named so the corresponding element needs not be bound and =
get<1>() is guaranteed not to be called (however, we might still chec=
k that it might have been called, for consistency).</div><div><br></div><di=
v>This tweak alone solves goal #2 of the proposal and is probably more eleg=
ant: since there's no name, there's little room for misunderstanding about =
the semantic.</div><div><br></div><div>Tweak #2</div><div><br></div><div>Ma=
ke [] a special case by allowing it for all types: in this particular case,=
tuple_size<>, tuple_element<> and get<>() function=
s are not required nor called. We would therefore be able to write:</div><d=
iv><br></div><div> auto [] =3D lock_guard{m};</div><div><br></=
div><div>even if lock_guard does not have a tuple-like interface. This actu=
ally solves goal #1! In fact, the declaration instantiate the "hidden" obje=
ct, which is destroyed at the end of scope, as usual. It simply doesn=
't bind it to a name.</div><div><br></div><div>There's only one drawback: s=
ince decomposition declarations mandate the use of auto, the syntax seems u=
nnecessarily verbose.</div><div><br></div><div>Tweak #3</div><div><br></div=
><div>Allow the decl-specifier-seq in a decomposition declaration to be dif=
ferent from auto. This would allow to write the code above more concisely:<=
/div><div><br></div><div><span style=3D"background-color: rgba(255, 255, 25=
5, 0);"> lock_guard [] {m};</span></div><div><br></d=
iv><div><span style=3D"background-color: rgba(255, 255, 255, 0);">Incidenta=
lly, this tweak would provide greater control over "normal" decomposition d=
eclarations too, giving a concise syntax to coerce the type of the hidden o=
bject.</span></div><div><span style=3D"background-color: rgba(255, 255, 255=
, 0);"><br></span></div><div>Tweak #3 is probably the most problematic part=
.. I admit I didn't follow the discussion that brought to the current wordin=
g of decomposition declarations, but I'm sure it has been discussed before =
and if there weren't problems<span style=3D"background-color: rgba(255, 255=
, 255, 0);"> it would probably have been allowed already. If anyone ha=
s pointers to share about that they are definitely welcome.</span></div><di=
v><span style=3D"background-color: rgba(255, 255, 255, 0);"><br></span></di=
v><div>Alberto</div><div><br></div><div><br></div></div></div></body></html=
>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" 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/FA395A70-558A-44D9-9EF5-6DF0385D3D3A%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/FA395A70-558A-44D9-9EF5-6DF0385D3D3A%=
40gmail.com</a>.<br />
--Apple-Mail-9039065D-5340-4B7E-AA1B-4792184C8414--
.
Author: Domen Vrankar <domen.vrankar@gmail.com>
Date: Mon, 10 Apr 2017 08:52:17 +0200
Raw View
--001a11c16b40f2bd4d054cca6cd5
Content-Type: text/plain; charset=UTF-8
2017-04-10 1:10 GMT+02:00 Alberto Barbati <albertobarbati@gmail.com>:
>
> Il giorno 03 apr 2017, alle ore 00:45, Nicol Bolas <jmckesson@gmail.com>
> ha scritto:
>
> This proposal is about having a scope-bound object which *cannot be later
> referenced*, which has a name that is generated by the compiler. That's
> what the proposal is for: "for all variables whose name is not important
> and that is no longer needed after declaration".
>
>
> Sorry to have left the thread for so long. After some pondering, although
> the __ approach is still on the table, I have decided to explore a bit
> further other options that do not require reserving an identifier, in
> particular the one suggested by Nicol Bolas. The fact is that I realized
> C++17 already has a tool that creates an object that cannot be
> referenced... that tool is decomposition declaration itself. With just
> three tweaks, which would make for a pure extension, we can achieve both
> goals of my proposal.
>
> Tweak #1
>
> Allow identifiers in a decomposition declaration to be omitted. So in
>
> auto [x, , z] = func();
>
> the second element is not named so the corresponding element needs not be
> bound and get<1>() is guaranteed not to be called (however, we might still
> check that it might have been called, for consistency).
>
> This tweak alone solves goal #2 of the proposal and is probably more
> elegant: since there's no name, there's little room for misunderstanding
> about the semantic.
>
Won't this be annoying to read? It might be just me but I would still
prefer a placeholder for something like that.
Regards,
Domen
--
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/CAKgx6BK_agZFNJSkvhkGn6c6u0PJkGhxBoYzu3t%3DFhj2zPj1mw%40mail.gmail.com.
--001a11c16b40f2bd4d054cca6cd5
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">2017-04-10 1:10 GMT+02:00 Alberto Barbati <span dir=3D"ltr=
"><<a href=3D"mailto:albertobarbati@gmail.com" target=3D"_blank">alberto=
barbati@gmail.com</a>></span>:<br><div class=3D"gmail_extra"><div class=
=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8=
ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"auto"><div><spa=
n></span></div><div><div><span></span></div><div><div></div><div><br></div>=
<div>Il giorno 03 apr 2017, alle ore 00:45, Nicol Bolas <<a href=3D"mail=
to:jmckesson@gmail.com" target=3D"_blank">jmckesson@gmail.com</a>> ha sc=
ritto:<br><br></div><blockquote type=3D"cite"><div>This proposal is about h=
aving a scope-bound object which <i>cannot be later referenced</i>, which h=
as a name that is generated by the compiler. That's what the proposal i=
s for: "for all variables whose name is not important and that is no l=
onger needed after declaration".</div></blockquote><br><div>Sorry to h=
ave left the thread for so long. After some pondering, although the __ appr=
oach is still on the table, I have decided to explore a bit further other o=
ptions that do not require reserving an identifier, in particular the one s=
uggested by Nicol Bolas. The fact is that I realized C++17 already has a to=
ol that creates an object that cannot be referenced... =C2=A0that tool is d=
ecomposition declaration itself. With just three tweaks, which would make f=
or a pure extension, we can achieve both goals of my proposal.</div><div><b=
r></div><div>Tweak #1</div><div><br></div><div>Allow identifiers in a decom=
position declaration to be omitted. So in</div><div><br></div><div>=C2=A0 =
=C2=A0 auto [x, , z] =3D func();</div><div><br></div><div>the second elemen=
t is not named so the corresponding element needs not be bound and get<1=
>() is guaranteed not to be called (however, we might still check that i=
t might have been called, for consistency).</div><div><br></div><div>This t=
weak alone solves goal #2 of the proposal and is probably more elegant: sin=
ce there's no name, there's little room for misunderstanding about =
the semantic.</div></div></div></div></blockquote><div><br></div><div>Won&#=
39;t this be annoying to read? It might be just me but I would still prefer=
a placeholder for something like that.<br><br></div><div>Regards,<br><br><=
/div><div>Domen<br></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" 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/CAKgx6BK_agZFNJSkvhkGn6c6u0PJkGhxBoYz=
u3t%3DFhj2zPj1mw%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAKgx6BK_agZFNJ=
SkvhkGn6c6u0PJkGhxBoYzu3t%3DFhj2zPj1mw%40mail.gmail.com</a>.<br />
--001a11c16b40f2bd4d054cca6cd5--
.
Author: Matthew Woehlke <mwoehlke.floss@gmail.com>
Date: Mon, 10 Apr 2017 09:53:28 -0400
Raw View
On 2017-04-03 16:28, T. C. wrote:
> if you declare multiple variables with the same name in the same
> scope, you can't access *any* of them. Name lookup will simply find
> all the declarations and declare an ambiguity at that point.
How's that going to work?
auto x = ...;
... lots of code ...
foo(..., x, ...);
... lots more code ...
auto x = ...;
The compiler isn't going to parse the entire scope for variable
declarations first in order to "retroactively" forbid the earlier use of
`x`.
Is the intent that `x` can be used until the second declaration? That's
just... bizarre.
--
Matthew
--
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/58EB8E58.9070105%40gmail.com.
.