Topic: Draft Proposal of Annotations


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Mon, 15 Feb 2016 05:03:05 +0100
Raw View
--001a1139c64407a15d052bc71812
Content-Type: multipart/alternative; boundary=001a1139c64407a157052bc71810

--001a1139c64407a157052bc71810
Content-Type: text/plain; charset=UTF-8

Please find attached a quick 2-page initial sketch of "Proposal of
Annotations".

Feedback appreciated.

Thanks,
Andrew.

--

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

--001a1139c64407a157052bc71810
Content-Type: text/html; charset=UTF-8

<div dir="ltr">Please find attached a quick 2-page initial sketch of &quot;Proposal of Annotations&quot;.<div><br></div><div>Feedback appreciated.</div><div><br></div><div>Thanks,</div><div>Andrew.</div><div><br></div></div>

<p></p>

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

--001a1139c64407a157052bc71810--
--001a1139c64407a15d052bc71812
Content-Type: application/pdf; name="ProposalofAnnotations.pdf"
Content-Disposition: attachment; filename="ProposalofAnnotations.pdf"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ikngda480

JVBERi0xLjQKJb/3ov4KMTYgMCBvYmoKPDwgL0xpbmVhcml6ZWQgMSAvTCAxMTg0NDggL0ggWyA5
NjggMTg1IF0gL08gMTkgL0UgNzk0NTQgL04gMiAvVCAxMTgwMDkgPj4KZW5kb2JqCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKeHJlZgoxNiAyNgow
MDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDA5MTcgMDAwMDAgbiAKMDAwMDAwMDk2OCAwMDAwMCBu
IAowMDAwMDAxMTUzIDAwMDAwIG4gCjAwMDAwMDEzOTUgMDAwMDAgbiAKMDAwMDAwMTUzOSAwMDAw
MCBuIAowMDAwMDAxODI0IDAwMDAwIG4gCjAwMDAwMDIwNjIgMDAwMDAgbiAKMDAwMDAxMzk3MyAw
MDAwMCBuIAowMDAwMDE0MzAzIDAwMDAwIG4gCjAwMDAwMjM3MjkgMDAwMDAgbiAKMDAwMDAyMzgy
NSAwMDAwMCBuIAowMDAwMDIzOTYyIDAwMDAwIG4gCjAwMDAwMjQ2NTEgMDAwMDAgbiAKMDAwMDAy
NDg4MCAwMDAwMCBuIAowMDAwMDQ4NTAwIDAwMDAwIG4gCjAwMDAwNDg5MjkgMDAwMDAgbiAKMDAw
MDA0OTA2NiAwMDAwMCBuIAowMDAwMDQ5Mjc5IDAwMDAwIG4gCjAwMDAwNDk1MDQgMDAwMDAgbiAK
MDAwMDA1NTc5OSAwMDAwMCBuIAowMDAwMDU2MDk1IDAwMDAwIG4gCjAwMDAwNTYyMzkgMDAwMDAg
biAKMDAwMDA1NjQ2NCAwMDAwMCBuIAowMDAwMDU2Njk5IDAwMDAwIG4gCjAwMDAwNzkwMjIgMDAw
MDAgbiAKdHJhaWxlciA8PCAvSW5mbyAxNSAwIFIgL1Jvb3QgMTcgMCBSIC9TaXplIDQyIC9QcmV2
IDExODAwMCAgICAgICAgICAgICAgICAvSUQgWzw2M2RhNmRmNzg0NzEwY2UxZDkyMDhkOThhM2Jh
YTYyOD48NjNkYTZkZjc4NDcxMGNlMWQ5MjA4ZDk4YTNiYWE2Mjg+XSA+PgpzdGFydHhyZWYKMAol
JUVPRgoxNyAwIG9iago8PCAvUGFnZXMgMTQgMCBSIC9UeXBlIC9DYXRhbG9nID4+CmVuZG9iagox
OCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvUyA1NyAvTGVuZ3RoIDEwNiA+PgpzdHJl
YW0KeJxjYGDgZWBgPsHAwsAwTYVBgAEKwGxWIGRgYFkweyeQZLASWrpxXY2y5qVtID4SEIdiBoYE
Bn5GFYYDrC84nh55YDXJEigUxOnCorvPQXMBl4NVQ6NBHrMCYwOHgGDplgMrQDoAHvEYiAplbmRz
dHJlYW0KZW5kb2JqCjE5IDAgb2JqCjw8IC9Db250ZW50cyAyNSAwIFIgL01lZGlhQm94IFsgMCAw
IDYxMiA3OTIgXSAvUGFyZW50IDE0IDAgUiAvUmVzb3VyY2VzIDw8IC9FeHRHU3RhdGUgPDwgL0cw
IDI2IDAgUiA+PiAvRm9udCA8PCAvRjAgMjcgMCBSIC9GMSAzMiAwIFIgL0YyIDIwIDAgUiAvRjMg
MzcgMCBSID4+IC9Qcm9jU2V0cyBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkg
XSA+PiAvVHlwZSAvUGFnZSA+PgplbmRvYmoKMjAgMCBvYmoKPDwgL0Jhc2VGb250IC9BcmlhbC1J
dGFsaWNNVCAvRGVzY2VuZGFudEZvbnRzIFsgMjEgMCBSIF0gL0VuY29kaW5nIC9JZGVudGl0eS1I
IC9TdWJ0eXBlIC9UeXBlMCAvVG9Vbmljb2RlIDI0IDAgUiAvVHlwZSAvRm9udCA+PgplbmRvYmoK
MjEgMCBvYmoKPDwgL0Jhc2VGb250IC9BcmlhbC1JdGFsaWNNVCAvQ0lEU3lzdGVtSW5mbyA8PCAv
T3JkZXJpbmcgKElkZW50aXR5KSAvUmVnaXN0cnkgKEFkb2JlKSAvU3VwcGxlbWVudCAwID4+IC9D
SURUb0dJRE1hcCAvSWRlbnRpdHkgL0ZvbnREZXNjcmlwdG9yIDIyIDAgUiAvU3VidHlwZSAvQ0lE
Rm9udFR5cGUyIC9UeXBlIC9Gb250IC9XIFsgMCBbIDc1MCBdIDY4IFsgNTU2LjE1MjMgXSA3NiBb
IDIyMi4xNjggXSA4MSA4MiA1NTYuMTUyMyA4NiBbIDUwMCAyNzcuODMyIF0gXSA+PgplbmRvYmoK
MjIgMCBvYmoKPDwgL0FzY2VudCA5MDUuMjczNCAvQ2FwSGVpZ2h0IDcxNS44MjAzIC9EZXNjZW50
IC0yMTEuOTE0MSAvRmxhZ3MgNjggL0ZvbnRCQm94IFsgLTUxNy4wODk4IC0zMjQuNzA3IDEwODEu
NTQzIDEwMjQuOTAyMyBdIC9Gb250RmlsZTIgMjMgMCBSIC9Gb250TmFtZSAvQXJpYWwtSXRhbGlj
TVQgL0l0YWxpY0FuZ2xlIC0xMiAvU3RlbVYgMjM3Ljc5MyAvVHlwZSAvRm9udERlc2NyaXB0b3Ig
Pj4KZW5kb2JqCjIzIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlIC9MZW5ndGgxIDI2MTYw
IC9MZW5ndGggMTE4MjIgPj4Kc3RyZWFtCnic7X0JeJRF0nB19ztXzslBDgLMmwwTQm6SkHBEEsgh
GLkPE+TIZDJJBpJMmJkQgnJ5LBpRo6w3niAisjpcEpBVdFW88NrVdRdEXNHFA0HXc4HMX93vO5MJ
6B7f/z3P/zz/Q4bqru6urqqurqrunoACAYBQWA0Mcm0t1rZPEhbeB2BMQ/ibbalHHvtt8usAma8A
aKY0tDW2JPVc6gRIDsP2uMbmzoaU0KoQgPHY1m1tslvrX6y/XUaO+xEKm7AjLFJfiPh3CEObWjzL
wkq0owAIQsTpZqfNCgPr0gHyErD9XYt1WZt2pV6P49gGudXaYn98wrBUgIk9AIPb21z2tg332O8G
SL0cQHsVcN3pO1/97eEHn14YWfy9PhGn4s9G1wvP8Xr3JTuOnPnwXKP+MX0+UDAgPREEWOrG9U6B
Mv0BHK/SPwbJoIOgH7af07D9WJTAXNDgbCPkwHgUNxzlMqBalRUdHQA3/TMJldywEMGhGwwHNXPg
YbKWSHQr/I5u9a1ng+EraRv0IO0I7FuI9VI62nc30t8muUkO1ssQ2hDmI9yC8ATCTwj3IHQhfTuf
y3kEwE0kvQmcmjm+P6O8Gs1B2IdwJeLzpE9gvnY06nEQ5vC5EkA59l+JvGZot8Jc7K/H8Wewrxrr
32O7FvFunOdD/GXEe3U3E0DezyF+CvvzkE84wpOo9w3seaR1+1bSrSQdec5FKEcZbqybERYhHV/H
SN5PDsIl5KBPj+OViBei/DJB74Z65PEltxnahM+fwm2J7dWIP4J6PCiB7xzigJBGt8FiGgv76Tbf
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
i0aMysotyM01GGZXYWfuiBEFBVgW5RfJRYUjR48cHR7S5PG0jcnJ6ejoyG7xb7zN2RIcE3a53GXt
4LbAEESlkNMMZx1G6BTMZk5M/Zk8SF0Om8Mqz7SK2HDjWTYq71d45zR5WppzWjz8/7WR0+JeaOV5
Ipt3/ocTOuzN2Gv/91N4K0e1o6Du9+VImbhmu8XF19pvZLEYWQ4nf2VEmRPcXxXU7xTX5/bgcfYQ
e4ZtYzvZXrb9V76gUZ4HwWPlZDrWnvN0dgbJ+eXV8Ef5L+nWKa7v50v/WL3u9OMmDZTKpFJpvDRK
yvsFXr9gGZIbWMnifjOmgZNYxSOl9TyNW8XjxgFfCCx4pAJ5LRfXeisA/B/Bd2TgZW5kc3RyZWFt
CmVuZG9iagoyNCAwIG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDI1OCA+Pgpz
dHJlYW0KeJxdkMtuhCAUhvc8xVlOFxPQGWfSxJjM2C5c9JLaPgDC0ZJUIIgL376AxiZdAPk5/3du
tG6eGq080HdnRIseeqWlw8nMTiB0OChNshykEn5T6RYjt4QGuF0mj2Oje0PKEoB+hOjk3QKHmzQd
PhD65iQ6pQc4fNVt0O1s7Q+OqD0wUlUgsQ+ZXrh95SMCTdixkSGu/HIMzJ/jc7EIedLZ2o0wEifL
BTquByQlYyyroGSn+70iqOW/eL5SXS++uYvu8zm62SWrkqpX9ZjYzbUze4kilWBFvrqfE1tc1s9r
eq6nLcUKxU7ixvYxxexcmDCtNY0Wh1Ia981bYyMVzy+ijoNdZW5kc3RyZWFtCmVuZG9iagoyNSAw
IG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDkzNTMgPj4Kc3RyZWFtCniclV3Z
qmS5cn2vr6gf8LbmAYzBfd3tZ5v+A+N7wXAfbP8/OJZObm1JkbHyFA1NURWpHQrFqBjkfzr57x+8
/K/28PM///7jf364q+bx1/MP8tf+J/77j3/7+fWH//3bj3/8N/fzb//3A//efPnpXS4///e/fvx1
/k3wPux/s8L0Mv6qF/fAOHzg6w/ygd/+/PGPf7ifoVyllPrzz7/+8De28mOf2s8///7jn5yL8Z9/
/vnfzz96H69ae15Acj5AQrhKLnEFCQdIrFdqsoMF5PxQDld0xbNVSr189BtIOUCau1Lu64dSOkB6
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
ZW5kc3RyZWFtCmVuZG9iagoyNiAwIG9iago8PCAvQk0gL05vcm1hbCAvQ0EgMSAvTEMgMCAvTEog
MCAvTFcgMCAvTUwgNCAvU0EgdHJ1ZSAvVHlwZSAvRXh0R1N0YXRlIC9jYSAxID4+CmVuZG9iagoy
NyAwIG9iago8PCAvQmFzZUZvbnQgL0FyaWFsTVQgL0Rlc2NlbmRhbnRGb250cyBbIDI4IDAgUiBd
IC9FbmNvZGluZyAvSWRlbnRpdHktSCAvU3VidHlwZSAvVHlwZTAgL1RvVW5pY29kZSAzMSAwIFIg
L1R5cGUgL0ZvbnQgPj4KZW5kb2JqCjI4IDAgb2JqCjw8IC9CYXNlRm9udCAvQXJpYWxNVCAvQ0lE
U3lzdGVtSW5mbyA8PCAvT3JkZXJpbmcgKElkZW50aXR5KSAvUmVnaXN0cnkgKEFkb2JlKSAvU3Vw
cGxlbWVudCAwID4+IC9DSURUb0dJRE1hcCAvSWRlbnRpdHkgL0ZvbnREZXNjcmlwdG9yIDI5IDAg
UiAvU3VidHlwZSAvQ0lERm9udFR5cGUyIC9UeXBlIC9Gb250IC9XIFsgMCBbIDc1MCAwIDAgMjc3
LjgzMiBdIDExIDEyIDMzMy4wMDc4IDE0IFsgNTgzLjk4NDQgMjc3LjgzMiAzMzMuMDA3OCAyNzcu
ODMyIF0gMTggMjggNTU2LjE1MjMgMjkgWyAyNzcuODMyIF0gMzAgMzQgNTgzLjk4NDQgMzUgWyAx
MDE1LjEzNjcgNjY2Ljk5MjIgMCA3MjIuMTY4IDcyMi4xNjggNjY2Ljk5MjIgNjEwLjgzOTggMCAw
IDI3Ny44MzIgMCAwIDU1Ni4xNTIzIDAgNzIyLjE2OCAwIDY2Ni45OTIyIDAgMCAwIDYxMC44Mzk4
IDAgMCA5NDMuODQ3NyBdIDY3IFsgMzMzLjAwNzggNTU2LjE1MjMgNTU2LjE1MjMgNTAwIDU1Ni4x
NTIzIDU1Ni4xNTIzIDI3Ny44MzIgNTU2LjE1MjMgNTU2LjE1MjMgMjIyLjE2OCAyMjIuMTY4IDUw
MCAyMjIuMTY4IDgzMy4wMDc4IF0gODEgODQgNTU2LjE1MjMgODUgWyAzMzMuMDA3OCA1MDAgMjc3
LjgzMiA1NTYuMTUyMyA1MDAgNzIyLjE2OCBdIDkxIDE3OCA1MDAgMTc5IDE4MCAzMzMuMDA3OCAx
ODIgWyAyMjIuMTY4IF0gXSA+PgplbmRvYmoKMjkgMCBvYmoKPDwgL0FzY2VudCA5MDUuMjczNCAv
Q2FwSGVpZ2h0IDcxNS44MjAzIC9EZXNjZW50IC0yMTEuOTE0MSAvRmxhZ3MgNCAvRm9udEJCb3gg
WyAtNjY0LjU1MDggLTMyNC43MDcgMjAyOC4zMjAzIDEwMzcuMTA5NCBdIC9Gb250RmlsZTIgMzAg
MCBSIC9Gb250TmFtZSAvQXJpYWxNVCAvSXRhbGljQW5nbGUgMCAvU3RlbVYgODcuODkwNiAvVHlw
ZSAvRm9udERlc2NyaXB0b3IgPj4KZW5kb2JqCjMwIDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVj
b2RlIC9MZW5ndGgxIDQzODkyIC9MZW5ndGggMjM1MzEgPj4Kc3RyZWFtCnic7L15fFPF+j/+zJw5
J3tykibN0rRJmiaFhrULUKg0LGUR2dcilbIpiwhlExWhXPZNUK8IqGyiIouEUrAsSlXUK4rgAvcK
CKjgXkFFXEqT7zMnKQLXz+dzv9/f7/vH7/ei6fs8M3Nmzsw888yzzEkBCADooBwEaDZi/LCJ91R2
Xw5g+xdA0iMjpk3xrpz44TSA1g4AqdndE+8Zf3/mi78ANBwNIEbuufeBu/d95HoPoN/3AG2mjx41
bOTh/Csr8IkHEC1GY4FlvHkLpi8jMkaPnzL98MbJYQDSCsC6/t4JI4aR9JWDAcJdML9p/LDpEzXv
6x/H+9gfeO8bNn7Ua+SeAoAVIwFSDBMnjZr43fayzwGa4n1tHfCx0w++f2j++dVDTQW/qFPUwH82
fpGZxenu2yr+8ceOunvk1uo7MKvB+kSpgFdV22gP6CDDHzuiOXLrRPm1H7EBLxEb4KUQRoAIFGRo
Cu0BmB77FYBKiSY0/xoi9J9wF5sMNkRXVSrcLw6AQWQBDKZbYAaHkAphtg0mYd0tmG+HdB9vi/X7
I84iChADEK5EWXfEMERfnse6e3lbfMZE/hyFTobBag9MEAfE6rC/leLbcDdiLaY3si9gs5QP4zG/
CdsdZAAteR1ss1LaAquw/Gm8PwLL1iIdhPkNmB6C7Zol0hrVMnByipCwvCE+Z0livpnCa9CCTY59
hnMpxmfejpiPffRC2gnRDeskIW2PWEDehoXk7dhGvI8U5mD/C3g5omOCdsHnzMP7hdguA/NzMO3C
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
6+Vz/XmvYOXt/rx7o0XzRB8t/CMbVO0clNpv3oTe9TM7IjZMhoq4DKYTkAJOdGEJyGkwmL8T7l/G
qUCtfgwni3RKRCctGeGTwhHhK8LjcDwiPCp8sYmWhROD2v3PkLa9hJe9hBrSC5wfWB/YFdgZuATO
ScC2cImYYdORLPcQ9xmB4BSPPoQp4/SM0iDk/wAl3kXUZW5kc3RyZWFtCmVuZG9iagozMSAwIG9i
ago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDM1NyA+PgpzdHJlYW0KeJxdks1ugzAQ
hO88hY/pIcIYkx8JIQFJJQ79UWkfgNhLilQMMuTA2xc8NJF6wNK3nrVnWPt5cSpMMzL/3XaqpJHV
jdGWhu5mFbELXRvjBYLpRo0ruVW1Ve/5c3M5DSO1hak7L44Z8z/m3WG0E9ukurvQk+e/WU22MVe2
+crLmctb3/9QS2Zk3EsSpqmeT3qp+teqJea7tm2h5/1mnLZzz0PxOfXEhOMAblSnaegrRbYyV/Ji
znmQsJhHYp94ZPS//SBE26VW35V18nCR85QnCwUcdAK5o7g4g06OwhT0DModCShDKEXuSB5BUEoo
QygllCFuj3B7uAdJUAraO8p2MwkeHF2s1f/hL80jfeaaOByIg+vlZxRhRGQIgKuDCM7X/AcUjyhG
CAClkHAOpdihCKUMXVGucfCndlBmKGYSAfI1ACwvI1qe0n3+6mbtPHr33tzMl2k3hu5Psu/6pWv5
fgFoprpSZW5kc3RyZWFtCmVuZG9iagozMiAwIG9iago8PCAvQmFzZUZvbnQgL0dhdXRhbWkgL0Rl
c2NlbmRhbnRGb250cyBbIDMzIDAgUiBdIC9FbmNvZGluZyAvSWRlbnRpdHktSCAvU3VidHlwZSAv
VHlwZTAgL1RvVW5pY29kZSAzNiAwIFIgL1R5cGUgL0ZvbnQgPj4KZW5kb2JqCjMzIDAgb2JqCjw8
IC9CYXNlRm9udCAvR2F1dGFtaSAvQ0lEU3lzdGVtSW5mbyA8PCAvT3JkZXJpbmcgKElkZW50aXR5
KSAvUmVnaXN0cnkgKEFkb2JlKSAvU3VwcGxlbWVudCAwID4+IC9DSURUb0dJRE1hcCAvSWRlbnRp
dHkgL0ZvbnREZXNjcmlwdG9yIDM0IDAgUiAvU3VidHlwZSAvQ0lERm9udFR5cGUyIC9UeXBlIC9G
b250IC9XIFsgMCBbIDUwMCBdIF0gPj4KZW5kb2JqCjM0IDAgb2JqCjw8IC9Bc2NlbnQgOTIzLjgy
ODEgL0NhcEhlaWdodCA2NjAuNjQ0NSAvRGVzY2VudCAtODEyLjUgL0ZsYWdzIDQgL0ZvbnRCQm94
IFsgLTE0NjEuOTE0MSAtODEyLjUgMTcyMi42NTYzIDExMzQuNzY1NiBdIC9Gb250RmlsZTIgMzUg
MCBSIC9Gb250TmFtZSAvR2F1dGFtaSAvSXRhbGljQW5nbGUgMCAvU3RlbVYgODQuNDcyNyAvVHlw
ZSAvRm9udERlc2NyaXB0b3IgPj4KZW5kb2JqCjM1IDAgb2JqCjw8IC9GaWx0ZXIgL0ZsYXRlRGVj
b2RlIC9MZW5ndGgxIDE2NzgwIC9MZW5ndGggNjIwNyA+PgpzdHJlYW0KeJztWgl0XNV5/t+9M5Is
jYxsnCAsg648eJcl44XYwoBsLUheZUt2JMMhepp50jwYzQyzSLYKjoBAjFjiuGxJSOpQUvbkmZDW
oZQ6LU0ICUlKKFDq5BiSEgqGBiIbbI08/e59b0ajxWxpctpzPOP/vf/999+Xe98cmTQiKqB+4rTI
161HUv8y+HuiyS8RuZivJy7K6mbGiM78ApFGnZGu7l/d+K0HiaYeJHInuoI7Or8tvo7nuXOhZXXA
0P2/3rbz74E/ATgvAEL+v+dBFw0Czgl0x7e/8PS1P4Cu5USFe4Nhn0506BdE06G/8N5ufXvEPTcn
hfVi8IuQ3m2cYT3ZDf1B+CAiUSNy47bnjhMVt4CnkqTv7tc636yj7Z87beURKskj+dn3A+Pv5P0n
G94sGNxwrL/w6UnT8DiJmJKQoVCu/1i/dunkvMENw78rfNqhZz48ICm4PkJ59BXKh2QRVdNmiNa7
E+Qm5iLkDB/Wb4O2mdpYBVXzG2gGf5gW86fA/zRN0Z6jakA5z6coL6eoFqImto0u0wLUxItouqsY
64OUzy1awx+nFtdSauGXUxX/Ge5n03n8CdyfoRbJr2Ruo2r2BHTdRhewB6nafQe1sHNgF7rknd0N
HNnlM2D/DTqffxrPg4AkfALdfSH8fRp8EnbRRcrnl+FDO7nd+6Hvt4AbaFXOUXWvzq2n6vz5VJ2T
h+d8wEo6V9LTkLOIprkCuBNtlfe8UGZtkgO2/Ou0Cvh5kidbfgKoA5ADiiZ1Sh1K9ik6T9Jcb9hr
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
lJTfmfCw837yX4rfVL7GstZHzndTye3IkvI73eVTO+GIVELtU+WjJs9QuUpXIarOm1jm7BNODxtq
9/isM5vGmD3jT5dLw9l1jEyV/WpK7W4xx3RLXHWLrnSKzJtC+p3NVOtmpj/H50J38mGqaO2Mj85J
OGuH0lUHznFm3bbQh2/4T56bP/63jm1prH5dvUlt/x+QnsFnZW5kc3RyZWFtCmVuZG9iagozNiAw
IG9iago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDIyNCA+PgpzdHJlYW0KeJxdkEFP
xCAQhe/8ijnuHjbQmuilaaLrpYdVY/UHUJhWEjuQKT303wvY1MQDJI/3vslj5LV77shFkG/sTY8R
RkeWcfErG4QBJ0eiqsE6E3dVbjPrIGSC+22JOHc0etE0API9uUvkDU6P1g94FvKVLbKjCU6f1z7p
fg3hG2ekCEq0LVgc06SbDi96RpAFu3Q2+S5ul8T8JT62gFAXXf22Md7iErRB1jShaJRSVQuNurt/
aAWS/efv1DCaL81HulbqqaT398zl/x2lzMqc+pQllCK5giM89hR8yFQ+PyNAbwJlbmRzdHJlYW0K
ZW5kb2JqCjM3IDAgb2JqCjw8IC9CYXNlRm9udCAvQ291cmllck5ld1BTTVQgL0Rlc2NlbmRhbnRG
b250cyBbIDM4IDAgUiBdIC9FbmNvZGluZyAvSWRlbnRpdHktSCAvU3VidHlwZSAvVHlwZTAgL1Rv
VW5pY29kZSA0MSAwIFIgL1R5cGUgL0ZvbnQgPj4KZW5kb2JqCjM4IDAgb2JqCjw8IC9CYXNlRm9u
dCAvQ291cmllck5ld1BTTVQgL0NJRFN5c3RlbUluZm8gPDwgL09yZGVyaW5nIChJZGVudGl0eSkg
L1JlZ2lzdHJ5IChBZG9iZSkgL1N1cHBsZW1lbnQgMCA+PiAvQ0lEVG9HSURNYXAgL0lkZW50aXR5
IC9Gb250RGVzY3JpcHRvciAzOSAwIFIgL1N1YnR5cGUgL0NJREZvbnRUeXBlMiAvVHlwZSAvRm9u
dCAvVyBbIDAgWyA2MDAuMDk3NyBdIF0gPj4KZW5kb2JqCjM5IDAgb2JqCjw8IC9Bc2NlbnQgODMy
LjUxOTUgL0NhcEhlaWdodCA1NzEuMjg5MSAvRGVzY2VudCAtMzAwLjI5MyAvRmxhZ3MgNSAvRm9u
dEJCb3ggWyAtMjEuNDg0NCAtNjc5LjY4NzUgNjM3LjY5NTMgMTAyMC45OTYxIF0gL0ZvbnRGaWxl
MiA0MCAwIFIgL0ZvbnROYW1lIC9Db3VyaWVyTmV3UFNNVCAvSXRhbGljQW5nbGUgMCAvU3RlbVYg
MTIwLjYwNTUgL1R5cGUgL0ZvbnREZXNjcmlwdG9yID4+CmVuZG9iago0MCAwIG9iago8PCAvRmls
dGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoMSA0MzM3NiAvTGVuZ3RoIDIyMjM0ID4+CnN0cmVhbQp4
nOy9d3wU1Rc4eu6d2b6b7X2zNbspm94IZEk2pIAgUgQhQiA0BQQhAhYsgIoiRUAEQVBR0a9SJIQW
AgoqFkQEFSsoqGCPol+sSXbfubObkKB+f77Pe3+9x0zO7XPnzunnziwAAQAVzAUOBlb2qhjy7KbL
RwKs7wPAna/sdXl5YrAN6xtCAKL8cVPHTB/+1kcjABSbAYy9xt040/3UU2N+Asj+GkBy5zXTr53a
dPL3GQDuczi+z7VTbrnmcK8yG0B/KUBow8QJY8YfnObU4B1PIhROxAbFrRTnJgasJ02cOvPmd2Fr
NdaHA8gHT5k2bgxJebQRoGgKgGHd1DE3T5ddq5yF/UU43n39mKkTlNvy3gK4D9djWjf9hgnTzzd9
oAIIYL/8OWDPRt/+/v6z4etHq0O/SGW4DDye9A8aw/KdPbfLosf/XCaySYNYleF4IgzAVPxs2xoA
/kj0ePQdviXefuHgWIsoQLxwGdwAIqCggSwow45H8b4cUP4IXMsGYs4m/I7IYS+cQYiQz2gNyYDP
YRkJQhM5Al/CWezZBC/D+3CQ6OBd+IroyRF8xrEwAR4kevgAtDAM5sCjMBweQ1pdh1dsgmosWSAT
JsJ2hOGwB5bClbgOPwyEcfAe7QlfkBDODGQfLIMMvOIOvOIDuB2GwvOwA/bjaowwBZZj31zsPQoP
wAgohiK860poJitpiDyIY7R4zsH52Z2uxJkunJvwutjZFD/ZbO3niPjZSgbhKm6DpWSasGoBLWQv
KcX76HCtU3GmsfAgwtVQD0EohP/AZySFBKAnPs10+JJ8h895H2zDtVyJTzYHr2Nrmoigg+XRn/D5
T5A24sd51uLKxyHmJXAdHQIJoIcWxGQQTuNcWnwGBsMRe7ETcA7AOdnZREJ4zxDpQYFsI02kmBxH
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
jeyQt2nSv9ke/2LvRBx1xQ7OI0dBinECXJ6QAq9hCa+YI0RmjHEiyCPMkUAeQR7vcAl5jO4xuqe7
m1e4s7uxb+i++Paqtdm5e2hu2XbNvaL7W5zGyars9wuQcLk3ZW5kc3RyZWFtCmVuZG9iagoxIDAg
b2JqCjw8IC9Db250ZW50cyAxMyAwIFIgL01lZGlhQm94IFsgMCAwIDYxMiA3OTIgXSAvUGFyZW50
IDE0IDAgUiAvUmVzb3VyY2VzIDw8IC9FeHRHU3RhdGUgPDwgL0cwIDI2IDAgUiAvRzEgMiAwIFIg
Pj4gL0ZvbnQgPDwgL0YwIDM3IDAgUiAvRjEgMjcgMCBSIC9GMiAzMiAwIFIgL0YzIDMgMCBSIC9G
NCA4IDAgUiA+PiAvUHJvY1NldHMgWyAvUERGIC9UZXh0IC9JbWFnZUIgL0ltYWdlQyAvSW1hZ2VJ
IF0gPj4gL1R5cGUgL1BhZ2UgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL0JNIC9Ob3JtYWwgL0NBIDEg
L0xDIDAgL0xKIDAgL0xXIDAuNTc5IC9NTCA0IC9TQSB0cnVlIC9UeXBlIC9FeHRHU3RhdGUgL2Nh
IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL0Jhc2VGb250IC9Db3VyaWVyTmV3UFMtQm9sZE1UIC9E
ZXNjZW5kYW50Rm9udHMgWyA0IDAgUiBdIC9FbmNvZGluZyAvSWRlbnRpdHktSCAvU3VidHlwZSAv
VHlwZTAgL1RvVW5pY29kZSA3IDAgUiAvVHlwZSAvRm9udCA+PgplbmRvYmoKNCAwIG9iago8PCAv
QmFzZUZvbnQgL0NvdXJpZXJOZXdQUy1Cb2xkTVQgL0NJRFN5c3RlbUluZm8gPDwgL09yZGVyaW5n
IChJZGVudGl0eSkgL1JlZ2lzdHJ5IChBZG9iZSkgL1N1cHBsZW1lbnQgMCA+PiAvQ0lEVG9HSURN
YXAgL0lkZW50aXR5IC9Gb250RGVzY3JpcHRvciA1IDAgUiAvU3VidHlwZSAvQ0lERm9udFR5cGUy
IC9UeXBlIC9Gb250IC9XIFsgMCBbIDYwMC4wOTc3IF0gXSA+PgplbmRvYmoKNSAwIG9iago8PCAv
QXNjZW50IDgzMi41MTk1IC9DYXBIZWlnaHQgNTkyLjI4NTIgL0Rlc2NlbnQgLTMwMC4yOTMgL0Zs
YWdzIDUgL0ZvbnRCQm94IFsgLTQ2LjM4NjcgLTcxMC40NDkyIDcwMS42NjAyIDEyMjEuMTkxNCBd
IC9Gb250RmlsZTIgNiAwIFIgL0ZvbnROYW1lIC9Db3VyaWVyTmV3UFMtQm9sZE1UIC9JdGFsaWNB
bmdsZSAwIC9TdGVtViAxNjAuMTU2MyAvVHlwZSAvRm9udERlc2NyaXB0b3IgPj4KZW5kb2JqCjYg
MCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xlbmd0aDEgMjk1MjQgL0xlbmd0aCAxMjYw
NCA+PgpzdHJlYW0KeJztfQlcVdX2/9r7nHsZBEVRHEg4l+vFAfDirIgya0aKAhqYJtNlKOASXCCt
1AbLyJLy2dxTGzUrL9iAZWXP6jVZplaaJtrwssGyntUrrpz/d+97GDR9r9//9/t/Pv/P/+89fPde
Z++111p77bX22QcBiRFRD1pOCsUWVuRX5bx34FI0rCLql1xY59Lu+XrJB0STY4l8viuuKqkY9peq
R4m03bgPLSlfXHzXoX4PEV3SQsT2lDryi147MWU2JG4Hxpeiocc37D7QJ4EhpRWuq8p8p9WBdyKR
f2a5szCf/GIiiFIuIOr7QEX+VVWBRX2PoX8A+LXK/ArHHfc8+iNRLuwZ+HpVtaNqgJ81nGjod0TB
KSRs5x98d3XUe18u6hX/s6+fL4nPw3OdSaJ+dsrWnvqG3+eYHvR7Hbx+AJMMKM2bTt1LpO7SN+ix
pgeN9q6PIlpMkSgSqJpMxCmI7HQJZr0aehXi6i4qEYyohcDtzJeW0GP0VzrKjvLB9BPoTLaBtrP3
aRNtBCrpZrqXbqT9dA/uPma72F/0f9BwyqY99Iy+h0IpkQZTGBVREsVgRCVaUvVP9BPgWULD0LeM
MilE/0D/hkIoiu5m7fQEnaLH9S3sEcrVv4WdUymZ1gKDsJ5uSqPr9MM0hubpP9CFVE53018gn3QP
RkdRE8vhjM2ha/U90J5IYVJTCOV2u6ohy3stNy5I67zCjOslNhSWTKVCNo6upYH677g2s0fYEBqu
fwiJl1ImZpoNnYPpMkqhATSDfFhv1osi0D+SNrLt+gG6heoxOo2mUykVS5uG6x/pH2HsTnqIdrN2
Ngzzv1/a/gA8HsSWwDv76WV4chjtpmEYESaAa6NxDZdXiLyWs3AWwCKYlX3JHmL3Mgt7moVTKua0
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
xj2Kv9JDCcCTkGFiD+GM8Yj6qPqY+ri6Ud2kPqFuVp9Un8JTcIvqVpvUZpxAnlGfVZ9Tn8dzcZv6
As4j29WX1JfVV9Qd6qvq39Sd6mvq6+ob6t/VN9W31LfVd9R31V3qe+r76m71A3WPulfdp36ofqR+
jKfqAfUT9aB6SP1UPay2qkfUo+pn6ufqF+qX6j/Ur9Rj6tfqN+q36nfqcfV79Qf1hPqj+pP6T/Y5
+0I9qf6s/qL+qv5L/Y2aqJk3sLH0LD1HO9mXtBVn7tfoenqVbqaf2Vd8h3otbad7cbr+Gz1Kd7IE
Ws2S8By6A+eBNayeWnDGP86+V6vUK9XlarV6g+rC/nSjWquuUK/CHnezulK9BTvdrWo9zmGr1NvU
29XVOB+sVe/FCeF+9QGczO7C+ewe9Rr1r+o6db26gR/mrfwIP8o/45/zL/iX/B/8K2WwEqaMU8Yr
/1ROYr82U+e3LZn4DhU/Y4dBp6KazD6+fv49AgJ79grq3Se4b7+Q/gMGDgq9YHBYuGaJsA6xRQ4d
NnxEVHTMSHvsqNFjxo4bP2HipLjJ8VOmJiQmJaekpk2bfuGMi9IvnjkrY/aczKzsufMuycmdf+mC
hZctysungsIiR3FJadnlV5RXVDqrrqyucdXW1V+1eMnV11y7dNny666/4cYVN9288paGW1fddvvq
xjvuXPOXtXfdfc+9993/wIN/Xbd+w0MPP/LoY49v3PTEZuXJp57e4m5q3vrMs88937LthRe3v/Ty
Kzte/dvO115/4+9vvvX2O+/ueu/93fTBnr37Pvzo4/0HPjl46NPDredPxedPxedPxedPxedPxedP
xedPxedPxedPxf+/n4oTL5o3Nzsrc87sjFkXzUiYOiV+ctykiRPGjR0zelSsfWRMdNSI4cOGRtqG
WCMsWnjY4AtCBw0c0D+kX9/gPr2DevUMDOjh7+frYzapCmcUnWadlqe5I/PcaqT1wgtjxL01Hw35
3Rry3Bqapp3O49byJJt2OmciOIvP4Ez0ciZ2crIgLZ7iY6K1NKvm3pVq1VrY/Dk5oG9LteZq7uOS
nilpNVLeBOLGYsEILW1AaarmZnlamntaXWlDWl4q5DX18E+xpjj8Y6Kpyb8HyB6g3P2tVU2s/1Qm
Cd4/La6Jk28grHIPsqamuQdaU4UJbsWWll/knj0nJy011GLJjYl2s5RCa4GbrMnuXlGShVKkGrc5
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
VMTLn/dotPhPeeSc1qvh6lR1spqijlcnqonqFDVdnXROidn/cZ3TxSzYKPCcm8N7XLzi3Dax3vSZ
YsVB5tyr6JQvrvlE9L8ASf2B3GVuZHN0cmVhbQplbmRvYmoKNyAwIG9iago8PCAvRmlsdGVyIC9G
bGF0ZURlY29kZSAvTGVuZ3RoIDIyNiA+PgpzdHJlYW0KeJxdkMFuwyAQRO98xR7TQwR2kptlqUov
PrSp4vYDMKxdpHpBa3zw3xeolUo9gDTMvNWw8tq9dOQiyHf2pscIoyPLuPiVDcKAkyNR1WCdibsq
t5l1EDLB/bZEnDsavWgaAHlP7hJ5g8Oz9QM+CXlji+xogsPntU+6X0P4xhkpghJtCxbHNOlVhzc9
I8iCHTubfBe3Y2L+Eh9bQKiLrn7bGG9xCdoga5pQNEqpqoVGXepLK5DsP3+nhtF8ac7p+pTT6qxK
en/PXP7fo5RZmVOfsoRSJFdwhI89BR8ylc8PHgRu8mVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago8
PCAvQmFzZUZvbnQgL0FyaWFsLUJvbGRNVCAvRGVzY2VuZGFudEZvbnRzIFsgOSAwIFIgXSAvRW5j
b2RpbmcgL0lkZW50aXR5LUggL1N1YnR5cGUgL1R5cGUwIC9Ub1VuaWNvZGUgMTIgMCBSIC9UeXBl
IC9Gb250ID4+CmVuZG9iago5IDAgb2JqCjw8IC9CYXNlRm9udCAvQXJpYWwtQm9sZE1UIC9DSURT
eXN0ZW1JbmZvIDw8IC9PcmRlcmluZyAoSWRlbnRpdHkpIC9SZWdpc3RyeSAoQWRvYmUpIC9TdXBw
bGVtZW50IDAgPj4gL0NJRFRvR0lETWFwIC9JZGVudGl0eSAvRm9udERlc2NyaXB0b3IgMTAgMCBS
IC9TdWJ0eXBlIC9DSURGb250VHlwZTIgL1R5cGUgL0ZvbnQgL1cgWyAwIFsgNzUwIF0gMTEgMTIg
MzMzLjAwNzggMzEgMzMgNTgzLjk4NDQgMzYgWyA3MjIuMTY4IDAgMCAwIDY2Ni45OTIyIF0gNjgg
WyA1NTYuMTUyMyBdIDc2IFsgMjc3LjgzMiBdIDgxIDgyIDYxMC44Mzk4IDg3IFsgMzMzLjAwNzgg
XSBdID4+CmVuZG9iagoxMCAwIG9iago8PCAvQXNjZW50IDkwNS4yNzM0IC9DYXBIZWlnaHQgNzE1
LjgyMDMgL0Rlc2NlbnQgLTIxMS45MTQxIC9GbGFncyA0IC9Gb250QkJveCBbIC02MjcuOTI5NyAt
Mzc2LjQ2NDggMjAzMy42OTE0IDEwNDcuODUxNiBdIC9Gb250RmlsZTIgMTEgMCBSIC9Gb250TmFt
ZSAvQXJpYWwtQm9sZE1UIC9JdGFsaWNBbmdsZSAwIC9TdGVtViAxMzcuMjA3IC9UeXBlIC9Gb250
RGVzY3JpcHRvciA+PgplbmRvYmoKMTEgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUgL0xl
bmd0aDEgMzM0MjQgL0xlbmd0aCAxNDkxNiA+PgpzdHJlYW0KeJztvXl8lEXyP17dT8+RexJyQ5gn
CROOJCSEQACRTICgiEA4TVQ0QzKQSC5yEHFXQNaLIIoiXnjEC1FRhgQ1XBrX+wTXZReF1azHCiqK
iich83t3zzMhQXR3v5/P7/vH90ViPVXdXdVVXVVd3c8kRGJEFEQrSKPMkkpXzcJtU28iitpP1OfG
kiX1+lf7b32TKLcfkWXUgpqFlQ9oX0USDS4jMp2zsGLpgs/ytk4iuvAnosBzy9yu0tdvChqJGXcB
RpahI+KF8FdBHwMMKKusv7xyxQVvE7FRRJHNFdUlLsr6+2aiSbPRfqjSdXlNcFA4eFks+PUqV6X7
jfKug0RuJ1HC9Jpad82D0SujiIZ6iGwVJG3n73y5JoituTRs7PfWOCvJrwc+Hpsg8VNnt+z55ZfO
E7Z863zwBgCYYsDTMq5rGk2w0S+/dM2w5Rv93V+mQbIHz29pLJWQiTjZKIPyiMxToVcjbjZE+GgD
HqM27Q2qEXUUAZhkSaAi0yt0IfuMLsbYIsAELYH6ic00B/wNaNcBr+OjvSfAPxfwAGA4YCogBXAR
4AIDZgHyIPMa4DHMcamcR+GP6TLLW3Q2dBHgNoALcKtpLq3H2O3m0TRf9kPXDZgjGfSd6L/H/Bjd
DPoOjBdJXoWl/Fw6D+NpoNeZ5nq9ljVkQR+BPoH+aOi/RdoMnAL9daLOewT0EMw9GePXAc8Bnm3Y
G6voj6WMWqtc4ypJwz/L0H8zYCZgNeAi+EfKZ0LOjvYa0EGwKwA4GBAqiJLAM5afTR7gdOifYKyb
1Lqxju41wX5l0+lB+jSvJ8Amua7DgLcAe3vYdiqs6QV1NFEbruIn1xwCOIu/RePhly65LtOn3h8l
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
V8qBfXOXGD0NytMyViezpFrFpVZ5tELJS0tldlQaUn4NJUp+iaG13FipHPN586QXFoBTzubrPenX
csO71cZKyhV/g2qdjGqdytgKZd3pc8K/c+q61yLHKtV8J+eohZ5FhrUuw/8lKqd1I+/9PitVuheq
Xp98I0bKjRhKngrE3pcj1XguxNgSw9u+GU7uZZeKlS87dOXDEmP95SpqFYqnRu0zXzZWKUnfSnpm
d3l3ZukYv9yITKWyRuamL251xk6u6LajUrVOZm/9KfWm7pT1lRg65qsZGpSnS3vlppsWo9/vWZnb
Jd0rXKByW1c5cLnybZ3Ku3oVjYXdUZe2+/a73Etp3bupzsiyk/XIN1qpIuKiK5S8z2o5b4kaPZlp
Pu2lyls1apcs7V6FX7eUb1TjLuWJWkOH3EM+L9Yreb/F/tlrVA5Vqhrqt23or+rqmF5RG68qZyl6
5xqa/FVWVslReOo0CHNI79eqneDbQYN7zJLePctU5PbJ/idVrtcae79S5c+i7jj/n9Z9X2wWGtXQ
bdS4k7XKN+scnAk6FSh5nVKUvql4TofuBSp7/V6T+VmnPF5mzDaUpoFvNk6QSYAJWJGkp6NXyk/C
83zVn4+eWXjKfXAOTo58fE9VvbPx1haoYLbK3LrT5LXe3e+z2Be9GiO+J/fDr/3jO/eq4YNalSFl
itu/Hn/19+fUfDW6FPwN3TpLuuuoz3cNSvZk/XMbO0RWqZM121cryo36XGfUj4VqFnd3/ZW+LTK0
yUqyxKjb87tPPp/O+t/xjD/LGrsrodvY3e7u/VOralW9UTsWGLl/On/5d7z0mLvHLCcrxq/1lRr5
JXN5vqrCPqvnG5GpMmY+XYQGqlX19pSv+v86K36t2V9HZcV0qVuNC1orDG/XGfXqt3QPVblf1aOm
L/1VLNzGjabnzvGdFC5lUY3yrDy7ytV++/cx141crOpRR/165e4vVZ4u73Fi1fa4daV1c9f2yNuT
94Tf95S0rlLN78+r6l7zNar4L1LR7FlN/LX4JGc1eH11pkF5XM5f1r0en109s7vSqN4+//t2VY2R
HyerfO8c+r0VncyPyWrtv46c/54nzze3cRv0rcZ3tyxRUa06JQa1p/j75MxyfdXq9lNq1NUl6h7W
SD1vcv8++v75fHvSbdw3ep/K/vl+HUeft07ejkvUnL/ex/6IuU7x9YL/ytqTXv61ht53i94WuY0b
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
WpApvCfkfglLLNb6nOLnxIBCNErj5f/MZIIrnF/wZJDqZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9i
ago8PCAvRmlsdGVyIC9GbGF0ZURlY29kZSAvTGVuZ3RoIDgzMjcgPj4Kc3RyZWFtCnicnX3bji05
jt37+YrzAxMtUdQNGBhwX6qfbdQfGPYAA/SDe/4fGFI7MxSkNlft0yigkJXFVEgUtcS78s8k//xb
ln/1ST//zz9+/P8f6ep1/frrh3/7+j/5p/7zv//+8/XDP//jx5/+nn7+x3/9SD9zqu3nyO31wz//
74//90MH0N9QzvT9m7dkOVdav5wtvX6no6fvDyX9ECehKzJQHvJD/yIr8t+l6i/n/mWVn0vXX479
yyY/V6EsxPcv1wr1K68f5Ct//v3Hn36T8flqrfWfv+tMvtgzZc5Zf/ePH/+eUir/4+fv/7n/ryzn
SilXSCPDpkQT0lARGmZIU0hoqhmnNkfDWWh6MTTd0dQkNMqkTcPsaeaVcsLjtCE0wtTnOH9xNL0L
jW7Xg8bPeTShYcNnJkczhc+5ZTRnSsLn3BviD2Xhc4YsJBI2UzJbysPRFGEzmVXV6khYuEyFEQeJ
hcvyL7Prf3Y0VbhMjeGUm3CZ+oBT7sJlmgXOeQiXSxpoR2kKl4tdu9+JkoTLpVjJ+M3RZGHzOsOx
xBcSNpdmdpSSoynC5zIyphE+F3ySCwuf2QyT/bKqsJnJSEZ2LJTZCk0xW5rddpUubOZqtjQ70ShD
2MzNiobbijKFzTzMlua/LZq//Y4wjdM7tuO/WdwbH+BgTLNxMKbZOBjTbBwc0Yl44OCITt8DB0ck
yQ8cjMfZODiiU/PAwU0T4+CmiXEwnPMDB0P+bByMSTYOjhBUbhwcIaZsHAw5+MDBvesxDsbjbByM
ubNxcNP8zxAHQyl84OBNc+DOxsGYZuNg+K0HDo4QMDYObhoPPBsHRwgqNw6OX8IUAcc3S/j+mxxi
CqVf/xO6memPq8BQ79XQ1OxhqFxTJAXSqOx3FaQHjT+KwnAiVUAfNB4aCl8lJUNzQAzTxbr/YBhu
V1UF9jGKBxg5Qn2kDGcs99dcujRYud5fw37rAOCerly5mPn4KfchK692zg49FPC4tmpopge8JEsf
Fa5d7sE+GO4opSxrrwONI2B35ZnhjlKaF7Uy4ThypCvhvSBKV+t4L0S6rkFk+HygdGmyFwnul0Kw
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
qw30rWUovbTqcBxOoqusJI2YzZyrshlCM8u1xC+tOhRnfUa+TgvNx3yKmuK5IPFZ+XHkriVvcMmV
M6s9FmckRqM1VOE4WklVE8QebUtSk7tOfOsSjcRkfExXKKZliD4rFPOyuMLrbfUTGRZTD907rcfM
7PXmQyhLZenwuK9QTLWYelpTmrxkRvEBFE3Xb5bmMDpWesmAp2tl0GV7As8su6792QmuSpWRYW/b
M8tOe11UKPF11Zk3eAPW1UDRctkXCmmRlCh+Fpxt1773emsd7xS8D3TdN8lM/+vHfwNkDwgGZW5k
c3RyZWFtCmVuZG9iagoxNCAwIG9iago8PCAvQ291bnQgMiAvS2lkcyBbIDE5IDAgUiAxIDAgUiBd
IC9UeXBlIC9QYWdlcyA+PgplbmRvYmoKMTUgMCBvYmoKPDwgL1Byb2R1Y2VyIChTa2lhL1BERikg
Pj4KZW5kb2JqCnhyZWYKMCAxNgowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwNzk0NTQgMDAwMDAg
biAKMDAwMDA3OTcxNCAwMDAwMCBuIAowMDAwMDc5ODEzIDAwMDAwIG4gCjAwMDAwNzk5NTkgMDAw
MDAgbiAKMDAwMDA4MDE4NyAwMDAwMCBuIAowMDAwMDgwNDI1IDAwMDAwIG4gCjAwMDAwOTMxMTcg
MDAwMDAgbiAKMDAwMDA5MzQxNCAwMDAwMCBuIAowMDAwMDkzNTU0IDAwMDAwIG4gCjAwMDAwOTM4
OTMgMDAwMDAgbiAKMDAwMDA5NDEyOCAwMDAwMCBuIAowMDAwMTA5MTMzIDAwMDAwIG4gCjAwMDAx
MDk0OTAgMDAwMDAgbiAKMDAwMDExNzg5MCAwMDAwMCBuIAowMDAwMTE3OTU3IDAwMDAwIG4gCnRy
YWlsZXIgPDwgL1NpemUgMTYgL0lEIFs8NjNkYTZkZjc4NDcxMGNlMWQ5MjA4ZDk4YTNiYWE2Mjg+
PDYzZGE2ZGY3ODQ3MTBjZTFkOTIwOGQ5OGEzYmFhNjI4Pl0gPj4Kc3RhcnR4cmVmCjIxNgolJUVP
Rgo=
--001a1139c64407a15d052bc71812--

.


Author: Alisdair Meredith <alisdairm@icloud.com>
Date: Sun, 14 Feb 2016 23:15:11 -0500
Raw View
--Apple-Mail-36F9FD25-5AA6-4F2F-B40E-73E412728925
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

One issue you will need to address is that '@' is not in the basic source c=
haracter set.  I have seen numerous proposals over the years that would hav=
e been much simpler if only we could use an otherwise unused symbol such as=
 '@'; simply extending the basic source character set may not be as simple =
as you might hope.

AlisdairM

Sent from my iPhone

> On Feb 14, 2016, at 11:03 PM, Andrew Tomazos <andrewtomazos@gmail.com> wr=
ote:
>=20
> Please find attached a quick 2-page initial sketch of "Proposal of Annota=
tions".
>=20
> Feedback appreciated.
>=20
> Thanks,
> Andrew.
>=20
> --=20
>=20
> ---=20
> You received this message because you are subscribed to the Google Groups=
 "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an=
 email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> Visit this group at https://groups.google.com/a/isocpp.org/group/std-prop=
osals/.
> <ProposalofAnnotations.pdf>

--=20

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

--Apple-Mail-36F9FD25-5AA6-4F2F-B40E-73E412728925
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>One issue you will need to address=
 is that '@' is not in the basic source character set. &nbsp;I have seen nu=
merous proposals over the years that would have been much simpler if only w=
e could use an otherwise unused symbol such as '@'; simply extending the ba=
sic source character set may not be as simple as you might hope.</div><div =
id=3D"AppleMailSignature"><br></div><div id=3D"AppleMailSignature">Alisdair=
M<br><br>Sent from my iPhone</div><div><br>On Feb 14, 2016, at 11:03 PM, An=
drew Tomazos &lt;<a href=3D"mailto:andrewtomazos@gmail.com">andrewtomazos@g=
mail.com</a>&gt; wrote:<br><br></div><blockquote type=3D"cite"><div><div di=
r=3D"ltr">Please find attached a quick 2-page initial sketch of "Proposal o=
f Annotations".<div><br></div><div>Feedback appreciated.</div><div><br></di=
v><div>Thanks,</div><div>Andrew.</div><div><br></div></div>

<p></p>

-- <br>
<br>
--- <br>
You received this message because you are subscribed to the Google Groups "=
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>
Visit this group at <a href=3D"https://groups.google.com/a/isocpp.org/group=
/std-proposals/">https://groups.google.com/a/isocpp.org/group/std-proposals=
/</a>.<br>
</div></blockquote><blockquote type=3D"cite"><div>&lt;ProposalofAnnotations=
..pdf&gt;</div></blockquote></body></html>

<p></p>

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

--Apple-Mail-36F9FD25-5AA6-4F2F-B40E-73E412728925--

.


Author: JOSE DANIEL GARCIA SANCHEZ <josedaniel.garcia@uc3m.es>
Date: Mon, 15 Feb 2016 06:50:55 +0100
Raw View
--001a113a60ca26e103052bc89c74
Content-Type: text/plain; charset=UTF-8

Hi Andrew,

I think the paper would benefit with rationale and use cases.
--
 J. Daniel

2016-02-15 5:03 GMT+01:00 Andrew Tomazos <andrewtomazos@gmail.com>:

> Please find attached a quick 2-page initial sketch of "Proposal of
> Annotations".
>
> Feedback appreciated.
>
> Thanks,
> Andrew.
>
> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> Visit this group at
> https://groups.google.com/a/isocpp.org/group/std-proposals/.
>

--

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

--001a113a60ca26e103052bc89c74
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Andrew,<div><br></div><div>I think the paper would bene=
fit with rationale and use cases.</div><div>--</div><div>=C2=A0J. Daniel</d=
iv><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">2016-02-15 5:0=
3 GMT+01:00 Andrew Tomazos <span dir=3D"ltr">&lt;<a href=3D"mailto:andrewto=
mazos@gmail.com" target=3D"_blank">andrewtomazos@gmail.com</a>&gt;</span>:<=
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">Please find attached a q=
uick 2-page initial sketch of &quot;Proposal of Annotations&quot;.<div><br>=
</div><div>Feedback appreciated.</div><div><br></div><div>Thanks,</div><div=
>Andrew.</div><span class=3D"HOEnZb"><font color=3D"#888888"><div><br></div=
></font></span></div><span class=3D"HOEnZb"><font color=3D"#888888">

<p></p>

-- <br>
<br>
--- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank">std-proposals+unsubscribe@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>
Visit this group at <a href=3D"https://groups.google.com/a/isocpp.org/group=
/std-proposals/" target=3D"_blank">https://groups.google.com/a/isocpp.org/g=
roup/std-proposals/</a>.<br>
</font></span></blockquote></div><br><br clear=3D"all"><div><br></div><div =
class=3D"gmail_signature"><div dir=3D"ltr"><div><div dir=3D"ltr"></div></di=
v></div></div>
</div></div>

<p></p>

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

--001a113a60ca26e103052bc89c74--

.


Author: Thiago Macieira <thiago@macieira.org>
Date: Sun, 14 Feb 2016 23:19:37 -0800
Raw View
On segunda-feira, 15 de fevereiro de 2016 05:03:05 PST Andrew Tomazos wrote:
> Please find attached a quick 2-page initial sketch of "Proposal of
> Annotations".
>
> Feedback appreciated.

Please explain why this can't be achieved with attributes and reflection,
whenever reflection comes into being.

--
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.
Visit this group at https://groups.google.com/a/isocpp.org/group/std-proposals/.

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Mon, 15 Feb 2016 08:52:15 +0100
Raw View
--001a1139c6449da6ba052bca4b03
Content-Type: text/plain; charset=UTF-8

On Mon, Feb 15, 2016 at 8:19 AM, Thiago Macieira <thiago@macieira.org>
wrote:

> On segunda-feira, 15 de fevereiro de 2016 05:03:05 PST Andrew Tomazos
> wrote:
> > Please find attached a quick 2-page initial sketch of "Proposal of
> > Annotations".
> >
> > Feedback appreciated.
>
> Please explain why this can't be achieved with attributes and reflection,
> whenever reflection comes into being.
>

Great question:

Attributes and annotations are two fundamentally different things:

-  Attributes in C++ are standard or implementation-defined optional hints
to the implementation that can be ignored (don't have a semantic effect),
each with a specific meaning built-in to the implementation.  There is no
use case to "reflect" attributes.

-  Annotations are a mandatory core feature that allows user-defined
user-provided metadata to be attached to entities.  There is a standard
portable way to create, read and write them.  There are no standard or
implementation-defined annotations - they have no built-in meaning to the
implementation.

I therefore think it makes sense to give them different names, so we don't
confuse the two.  I also think it makes sense to distinguish the syntax for
the same reason.

--

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

--001a1139c6449da6ba052bca4b03
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Mon, Feb 15, 2016 at 8:19 AM, Thiago Macieira <span dir=3D"ltr">&lt;=
<a href=3D"mailto:thiago@macieira.org" target=3D"_blank">thiago@macieira.or=
g</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204=
);border-left-style:solid;padding-left:1ex"><span class=3D"">On segunda-fei=
ra, 15 de fevereiro de 2016 05:03:05 PST Andrew Tomazos wrote:<br>
&gt; Please find attached a quick 2-page initial sketch of &quot;Proposal o=
f<br>
&gt; Annotations&quot;.<br>
&gt;<br>
&gt; Feedback appreciated.<br>
<br>
</span>Please explain why this can&#39;t be achieved with attributes and re=
flection,<br>
whenever reflection comes into being.<br></blockquote><div><br></div><div>G=
reat question:</div><div><br></div><div class=3D"gmail_extra" style=3D"font=
-size:12.8px">Attributes and annotations are two fundamentally different th=
ings:</div><div class=3D"gmail_extra" style=3D"font-size:12.8px"><br></div>=
<div class=3D"gmail_extra" style=3D"font-size:12.8px">- =C2=A0Attributes in=
 C++ are standard or implementation-defined optional hints to the implement=
ation that can be ignored (don&#39;t have a semantic effect), each with a s=
pecific meaning built-in to the implementation.=C2=A0 There is no use case =
to &quot;reflect&quot; attributes.</div><div class=3D"gmail_extra" style=3D=
"font-size:12.8px"><br></div><div class=3D"gmail_extra" style=3D"font-size:=
12.8px">- =C2=A0Annotations are a mandatory core feature that allows user-d=
efined user-provided metadata to be attached to entities.=C2=A0 There is a =
standard portable way to create, read and write them.=C2=A0 There are no st=
andard or implementation-defined annotations - they have no built-in meanin=
g to the implementation.</div><div class=3D"gmail_extra" style=3D"font-size=
:12.8px"><br></div><div><span style=3D"font-size:12.8px">I therefore think =
it makes sense to give them different names, so we don&#39;t confuse the tw=
o.=C2=A0 I also think it makes sense to distinguish the syntax for the same=
 reason.</span></div><div>=C2=A0</div></div></div></div>

<p></p>

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

--001a1139c6449da6ba052bca4b03--

.


Author: Thiago Macieira <thiago@macieira.org>
Date: Mon, 15 Feb 2016 00:21:23 -0800
Raw View
On segunda-feira, 15 de fevereiro de 2016 08:52:15 PST Andrew Tomazos wrote:
> On Mon, Feb 15, 2016 at 8:19 AM, Thiago Macieira <thiago@macieira.org>
> wrote:
> > On segunda-feira, 15 de fevereiro de 2016 05:03:05 PST Andrew Tomazos
> >
> > wrote:
> > > Please find attached a quick 2-page initial sketch of "Proposal of
> > > Annotations".
> > >
> > > Feedback appreciated.
> >
> > Please explain why this can't be achieved with attributes and reflection,
> > whenever reflection comes into being.
>
> Great question:
>
> Attributes and annotations are two fundamentally different things:
>
> -  Attributes in C++ are standard or implementation-defined optional hints
> to the implementation that can be ignored (don't have a semantic effect),
> each with a specific meaning built-in to the implementation.  There is no
> use case to "reflect" attributes.
>
> -  Annotations are a mandatory core feature that allows user-defined
> user-provided metadata to be attached to entities.  There is a standard
> portable way to create, read and write them.  There are no standard or
> implementation-defined annotations - they have no built-in meaning to the
> implementation.
>
> I therefore think it makes sense to give them different names, so we don't
> confuse the two.  I also think it makes sense to distinguish the syntax for
> the same reason.

So you're comparing something that doesn't exist (reflection for attributes)
with something else that doesn't exist (annotations) and you're claiming that
they're incompatible. The only difference I see here is that attributes
currently have use -- which is obvious, since they exist, while annotations
don't.

Please explain why reflections for attributes could not ever do what you're
proposing for annotations.

--
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.
Visit this group at https://groups.google.com/a/isocpp.org/group/std-proposals/.

.


Author: "'snk_kid' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Date: Mon, 15 Feb 2016 01:28:55 -0800 (PST)
Raw View
------=_Part_251_162549548.1455528535402
Content-Type: multipart/alternative;
 boundary="----=_Part_252_1488272134.1455528535402"

------=_Part_252_1488272134.1455528535402
Content-Type: text/plain; charset=UTF-8

No reason why attributes couldn't be extended in the future to support user
defined attributes like in .NET. don't see much reason to introduce a new
syntax and/or a second way of doing something very similar. C++ Attributes
are very similar to .NET attributes, just C++ version lacks the support for
user-defined ones.

The way I'd imagine it working is by expanding on the meta-programming
capabilities of constexpr such that you could write constexpr function
macros for user-defined attributes.

On Monday, February 15, 2016 at 7:52:17 AM UTC, Andrew Tomazos wrote:
>
>
>
> On Mon, Feb 15, 2016 at 8:19 AM, Thiago Macieira <thi...@macieira.org
> <javascript:>> wrote:
>
>> On segunda-feira, 15 de fevereiro de 2016 05:03:05 PST Andrew Tomazos
>> wrote:
>> > Please find attached a quick 2-page initial sketch of "Proposal of
>> > Annotations".
>> >
>> > Feedback appreciated.
>>
>> Please explain why this can't be achieved with attributes and reflection,
>> whenever reflection comes into being.
>>
>
> Great question:
>
> Attributes and annotations are two fundamentally different things:
>
> -  Attributes in C++ are standard or implementation-defined optional hints
> to the implementation that can be ignored (don't have a semantic effect),
> each with a specific meaning built-in to the implementation.  There is no
> use case to "reflect" attributes.
>
> -  Annotations are a mandatory core feature that allows user-defined
> user-provided metadata to be attached to entities.  There is a standard
> portable way to create, read and write them.  There are no standard or
> implementation-defined annotations - they have no built-in meaning to the
> implementation.
>
> I therefore think it makes sense to give them different names, so we don't
> confuse the two.  I also think it makes sense to distinguish the syntax for
> the same reason.
>
>

--

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

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

<div dir=3D"ltr">No reason why attributes couldn&#39;t be extended in the f=
uture to support user defined attributes like in .NET. don&#39;t see much r=
eason to introduce a new syntax and/or a second way of doing something very=
 similar. C++ Attributes are very similar to .NET attributes, just C++ vers=
ion lacks the support for user-defined ones.<div><br></div><div>The way I&#=
39;d imagine it working is by expanding on the meta-programming capabilitie=
s of constexpr such that you could write constexpr function macros for user=
-defined attributes.<br><br>On Monday, February 15, 2016 at 7:52:17 AM UTC,=
 Andrew Tomazos 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"><br><div><br><div class=3D"gmail_quote">On Mon, Feb 15, 2016 at 8:=
19 AM, Thiago Macieira <span dir=3D"ltr">&lt;<a href=3D"javascript:" target=
=3D"_blank" gdf-obfuscated-mailto=3D"46STBD_gHwAJ" rel=3D"nofollow" onmouse=
down=3D"this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.hre=
f=3D&#39;javascript:&#39;;return true;">thi...@macieira.org</a>&gt;</span> =
wrote:<br><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8=
ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-sty=
le:solid;padding-left:1ex"><span>On segunda-feira, 15 de fevereiro de 2016 =
05:03:05 PST Andrew Tomazos wrote:<br>
&gt; Please find attached a quick 2-page initial sketch of &quot;Proposal o=
f<br>
&gt; Annotations&quot;.<br>
&gt;<br>
&gt; Feedback appreciated.<br>
<br>
</span>Please explain why this can&#39;t be achieved with attributes and re=
flection,<br>
whenever reflection comes into being.<br></blockquote><div><br></div><div>G=
reat question:</div><div><br></div><div style=3D"font-size:12.8px">Attribut=
es and annotations are two fundamentally different things:</div><div style=
=3D"font-size:12.8px"><br></div><div style=3D"font-size:12.8px">- =C2=A0Att=
ributes in C++ are standard or implementation-defined optional hints to the=
 implementation that can be ignored (don&#39;t have a semantic effect), eac=
h with a specific meaning built-in to the implementation.=C2=A0 There is no=
 use case to &quot;reflect&quot; attributes.</div><div style=3D"font-size:1=
2.8px"><br></div><div style=3D"font-size:12.8px">- =C2=A0Annotations are a =
mandatory core feature that allows user-defined user-provided metadata to b=
e attached to entities.=C2=A0 There is a standard portable way to create, r=
ead and write them.=C2=A0 There are no standard or implementation-defined a=
nnotations - they have no built-in meaning to the implementation.</div><div=
 style=3D"font-size:12.8px"><br></div><div><span style=3D"font-size:12.8px"=
>I therefore think it makes sense to give them different names, so we don&#=
39;t confuse the two.=C2=A0 I also think it makes sense to distinguish the =
syntax for the same reason.</span></div><div>=C2=A0</div></div></div></div>
</blockquote></div></div>

<p></p>

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

------=_Part_252_1488272134.1455528535402--
------=_Part_251_162549548.1455528535402--

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Mon, 15 Feb 2016 10:52:01 +0100
Raw View
--001a11441386f384ef052bcbf7d6
Content-Type: text/plain; charset=UTF-8

On Mon, Feb 15, 2016 at 10:28 AM, 'snk_kid' via ISO C++ Standard - Future
Proposals <std-proposals@isocpp.org> wrote:

> The way I'd imagine it working is by expanding on the meta-programming
> capabilities of constexpr such that you could write constexpr function
> macros for user-defined attributes.
>

What do you mean the "meta-programming capabilities of constexpr"?  What is
a "constexpr function macro"?  There are "constexpr functions" and
"function macros".  One exists at preprocessing, the other during
translation proper.  Perhaps you could provide a code example illustrating
your idea.

--

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

--001a11441386f384ef052bcbf7d6
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, Feb 15, 2016 at 10:28 AM, &#39;snk_kid&#39; via ISO C++ Standard - Futu=
re Proposals <span dir=3D"ltr">&lt;<a href=3D"mailto:std-proposals@isocpp.o=
rg" target=3D"_blank">std-proposals@isocpp.org</a>&gt;</span> wrote:<br><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #=
ccc solid;padding-left:1ex"><div dir=3D"ltr"><div>The way I&#39;d imagine i=
t working is by expanding on the meta-programming capabilities of constexpr=
 such that you could write constexpr function macros for user-defined attri=
butes.<br></div></div></blockquote><div><br></div><div>What do you mean the=
 &quot;meta-programming capabilities of constexpr&quot;?=C2=A0 What is a &q=
uot;constexpr function macro&quot;?=C2=A0 There are &quot;constexpr functio=
ns&quot; and &quot;function macros&quot;.=C2=A0 One exists at preprocessing=
, the other during translation proper.=C2=A0 Perhaps you could provide a co=
de example illustrating your idea.</div><div><br></div></div></div></div>

<p></p>

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

--001a11441386f384ef052bcbf7d6--

.


Author: "'snk_kid' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Date: Mon, 15 Feb 2016 03:14:25 -0800 (PST)
Raw View
------=_Part_137_184637610.1455534865804
Content-Type: multipart/alternative;
 boundary="----=_Part_138_1975569207.1455534865804"

------=_Part_138_1975569207.1455534865804
Content-Type: text/plain; charset=UTF-8

Just the way I'm wording things, don't over think it but I will try to
explain. I'm sure you know that generalized constant expressions are
another way of doing a (limited) form of compile-time meta-programming in
C++ (and in my opinion much better than trying to do meta-programming via
templates). I say they are "limited" because currently all they can do is
compile-time computations, it is missing the ability to transform/generate
code (without resorting to horrible hacks/exploits in the language to
achieve this such as SFINAE tricks).

Basically what I mean is maybe C++ could expand on constexpr functions so
they could be used as AST macros, so not just for pure compile-time
computations but also codegen. I didn't mean preprocessor macros which are
only textual substitution and don't really "know" or respect anything about
C++. When I say constexpr function macros, I just mean a constexpr function
which manipulates the AST rather than a pure compile-time computation.

In the context of user-defined attributes, I was thinking about Nemerle's
support for using Nemerle AST macros on-top of .NET's attribute system, check
this
<https://github.com/rsdn/nemerle/wiki/Macros-tutorial#Macros_in_custom_attributes>

It wont be an easy thing to achieve, the biggest hurdle I think would be to
standardize a compiler-internal/AST API. Maybe for a first spec of
user-defined attributes this would be overkill for the amount of time/work
it would require, maybe it should start by doing it similar to the .NET way
where you have a (special) base class (like std::exception) that
programmers derive from then maybe in the future we could use constexpr
functions to reduce the amount of boiler-plate code required to write them
while also giving more meta-programming functionality on top of them like
in Nemerle. Even without constexpr functions there still needs to be some
sort of reflection API for any of this to work.

On Monday, February 15, 2016 at 9:52:03 AM UTC, Andrew Tomazos wrote:
>
> On Mon, Feb 15, 2016 at 10:28 AM, 'snk_kid' via ISO C++ Standard - Future
> Proposals <std-pr...@isocpp.org <javascript:>> wrote:
>
>> The way I'd imagine it working is by expanding on the meta-programming
>> capabilities of constexpr such that you could write constexpr function
>> macros for user-defined attributes.
>>
>
> What do you mean the "meta-programming capabilities of constexpr"?  What
> is a "constexpr function macro"?  There are "constexpr functions" and
> "function macros".  One exists at preprocessing, the other during
> translation proper.  Perhaps you could provide a code example illustrating
> your idea.
>
>

--

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

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

<div dir=3D"ltr">Just the way I&#39;m wording things, don&#39;t over think =
it but I will try to explain. I&#39;m sure you know that generalized consta=
nt expressions are another way of doing a (limited) form of compile-time me=
ta-programming in C++ (and in my opinion much better than trying to do meta=
-programming via templates). I say they are &quot;limited&quot; because cur=
rently all they can do is compile-time computations, it is missing the abil=
ity to transform/generate code (without resorting to horrible hacks/exploit=
s in the language to achieve this such as SFINAE tricks).<div><br></div><di=
v>Basically what I mean is maybe C++ could expand on constexpr functions so=
 they could be used as AST macros, so not just for pure compile-time comput=
ations but also codegen. I didn&#39;t mean preprocessor macros which are on=
ly textual substitution and don&#39;t really &quot;know&quot; or respect an=
ything about C++. When I say constexpr function macros, I just mean a const=
expr function which manipulates the AST rather than a pure compile-time com=
putation.</div><div><br></div><div>In the context of user-defined attribute=
s, I was thinking about Nemerle&#39;s support for using Nemerle AST macros =
on-top of .NET&#39;s attribute system, <a href=3D"https://github.com/rsdn/n=
emerle/wiki/Macros-tutorial#Macros_in_custom_attributes">check this</a></di=
v><div><br></div><div>It wont be an easy thing to achieve, the biggest hurd=
le I think would be to standardize a compiler-internal/AST API. Maybe for a=
 first spec of user-defined attributes this would be overkill for the amoun=
t of time/work it would require, maybe it should start by doing it similar =
to the .NET way where you have a (special) base class (like std::exception)=
 that programmers derive from then maybe in the future we could use constex=
pr functions to reduce the amount of boiler-plate code required to write th=
em while also giving more meta-programming functionality on top of them lik=
e in Nemerle. Even without constexpr functions there still needs to be some=
 sort of reflection API for any of this to work.</div><div><div><div><br><d=
iv><div><div><div>On Monday, February 15, 2016 at 9:52:03 AM UTC, Andrew To=
mazos 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><div class=3D"gmail_quote">On Mon, Feb 15, 2016 at 10:28 AM, &#39;snk_k=
id&#39; via ISO C++ Standard - Future Proposals <span dir=3D"ltr">&lt;<a hr=
ef=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"jkRcIcjmHwAJ"=
 rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;javascript:&#39;;return t=
rue;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true;">std-pr...@=
isocpp.org</a>&gt;</span> wrote:<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"><div>The way I&#39;d imagine it working is by expanding on the met=
a-programming capabilities of constexpr such that you could write constexpr=
 function macros for user-defined attributes.<br></div></div></blockquote><=
div><br></div><div>What do you mean the &quot;meta-programming capabilities=
 of constexpr&quot;?=C2=A0 What is a &quot;constexpr function macro&quot;?=
=C2=A0 There are &quot;constexpr functions&quot; and &quot;function macros&=
quot;.=C2=A0 One exists at preprocessing, the other during translation prop=
er.=C2=A0 Perhaps you could provide a code example illustrating your idea.<=
/div><div><br></div></div></div></div>
</blockquote></div></div></div></div></div></div></div></div>

<p></p>

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

------=_Part_138_1975569207.1455534865804--
------=_Part_137_184637610.1455534865804--

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Mon, 15 Feb 2016 13:33:32 +0100
Raw View
--001a1139c6449272ff052bce391b
Content-Type: text/plain; charset=UTF-8

What you are proposing is essentially a standardized AST of the program
being translated, that is exposed at compile-time as a mutable data
structure, to the program being translated, itself.  The idea has been
explored, and it was determined to be undesirable.  It would be very
complex to specify and implement, has only boutique use cases, and is far
too dangerous and powerful.

The proposed annotations on the other hand are a simple mechanism to
associate constant expressions with entities.  They are easy to understand,
use and implement.

On Mon, Feb 15, 2016 at 12:14 PM, 'snk_kid' via ISO C++ Standard - Future
Proposals <std-proposals@isocpp.org> wrote:

> Just the way I'm wording things, don't over think it but I will try to
> explain. I'm sure you know that generalized constant expressions are
> another way of doing a (limited) form of compile-time meta-programming in
> C++ (and in my opinion much better than trying to do meta-programming via
> templates). I say they are "limited" because currently all they can do is
> compile-time computations, it is missing the ability to transform/generate
> code (without resorting to horrible hacks/exploits in the language to
> achieve this such as SFINAE tricks).
>
> Basically what I mean is maybe C++ could expand on constexpr functions so
> they could be used as AST macros, so not just for pure compile-time
> computations but also codegen. I didn't mean preprocessor macros which are
> only textual substitution and don't really "know" or respect anything about
> C++. When I say constexpr function macros, I just mean a constexpr function
> which manipulates the AST rather than a pure compile-time computation.
>
> In the context of user-defined attributes, I was thinking about Nemerle's
> support for using Nemerle AST macros on-top of .NET's attribute system, check
> this
> <https://github.com/rsdn/nemerle/wiki/Macros-tutorial#Macros_in_custom_attributes>
>
> It wont be an easy thing to achieve, the biggest hurdle I think would be
> to standardize a compiler-internal/AST API. Maybe for a first spec of
> user-defined attributes this would be overkill for the amount of time/work
> it would require, maybe it should start by doing it similar to the .NET way
> where you have a (special) base class (like std::exception) that
> programmers derive from then maybe in the future we could use constexpr
> functions to reduce the amount of boiler-plate code required to write them
> while also giving more meta-programming functionality on top of them like
> in Nemerle. Even without constexpr functions there still needs to be some
> sort of reflection API for any of this to work.
>
> On Monday, February 15, 2016 at 9:52:03 AM UTC, Andrew Tomazos wrote:
>>
>> On Mon, Feb 15, 2016 at 10:28 AM, 'snk_kid' via ISO C++ Standard - Future
>> Proposals <std-pr...@isocpp.org> wrote:
>>
>>> The way I'd imagine it working is by expanding on the meta-programming
>>> capabilities of constexpr such that you could write constexpr function
>>> macros for user-defined attributes.
>>>
>>
>> What do you mean the "meta-programming capabilities of constexpr"?  What
>> is a "constexpr function macro"?  There are "constexpr functions" and
>> "function macros".  One exists at preprocessing, the other during
>> translation proper.  Perhaps you could provide a code example illustrating
>> your idea.
>>
>> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> Visit this group at
> https://groups.google.com/a/isocpp.org/group/std-proposals/.
>

--

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

--001a1139c6449272ff052bce391b
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">What you are proposing is essentially a standardized AST o=
f the program being translated, that is exposed at compile-time as a mutabl=
e data structure, to the program being translated, itself.=C2=A0 The idea h=
as been explored, and it was determined to be undesirable.=C2=A0 It would b=
e very complex to specify and implement, has only boutique use cases, and i=
s far too dangerous and powerful.<div><div><br></div><div>The proposed anno=
tations on the other hand are a simple mechanism to associate constant expr=
essions with entities.=C2=A0 They are easy to understand, use and implement=
..</div><div><br></div><div><div class=3D"gmail_extra"><div class=3D"gmail_q=
uote">On Mon, Feb 15, 2016 at 12:14 PM, &#39;snk_kid&#39; via ISO C++ Stand=
ard - Future Proposals <span dir=3D"ltr">&lt;<a href=3D"mailto:std-proposal=
s@isocpp.org" target=3D"_blank">std-proposals@isocpp.org</a>&gt;</span> wro=
te:<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">Just the way I&#39;m=
 wording things, don&#39;t over think it but I will try to explain. I&#39;m=
 sure you know that generalized constant expressions are another way of doi=
ng a (limited) form of compile-time meta-programming in C++ (and in my opin=
ion much better than trying to do meta-programming via templates). I say th=
ey are &quot;limited&quot; because currently all they can do is compile-tim=
e computations, it is missing the ability to transform/generate code (witho=
ut resorting to horrible hacks/exploits in the language to achieve this suc=
h as SFINAE tricks).<div><br></div><div>Basically what I mean is maybe C++ =
could expand on constexpr functions so they could be used as AST macros, so=
 not just for pure compile-time computations but also codegen. I didn&#39;t=
 mean preprocessor macros which are only textual substitution and don&#39;t=
 really &quot;know&quot; or respect anything about C++. When I say constexp=
r function macros, I just mean a constexpr function which manipulates the A=
ST rather than a pure compile-time computation.</div><div><br></div><div>In=
 the context of user-defined attributes, I was thinking about Nemerle&#39;s=
 support for using Nemerle AST macros on-top of .NET&#39;s attribute system=
, <a href=3D"https://github.com/rsdn/nemerle/wiki/Macros-tutorial#Macros_in=
_custom_attributes" target=3D"_blank">check this</a></div><div><br></div><d=
iv>It wont be an easy thing to achieve, the biggest hurdle I think would be=
 to standardize a compiler-internal/AST API. Maybe for a first spec of user=
-defined attributes this would be overkill for the amount of time/work it w=
ould require, maybe it should start by doing it similar to the .NET way whe=
re you have a (special) base class (like std::exception) that programmers d=
erive from then maybe in the future we could use constexpr functions to red=
uce the amount of boiler-plate code required to write them while also givin=
g more meta-programming functionality on top of them like in Nemerle. Even =
without constexpr functions there still needs to be some sort of reflection=
 API for any of this to work.</div><div><div><div><br><div><div><div><div>O=
n Monday, February 15, 2016 at 9:52:03 AM UTC, Andrew Tomazos wrote:<span c=
lass=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><di=
v class=3D"gmail_quote">On Mon, Feb 15, 2016 at 10:28 AM, &#39;snk_kid&#39;=
 via ISO C++ Standard - Future Proposals <span dir=3D"ltr">&lt;<a rel=3D"no=
follow">std-pr...@isocpp.org</a>&gt;</span> wrote:<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"><div>The way I&#39;d imagine it working is by ex=
panding on the meta-programming capabilities of constexpr such that you cou=
ld write constexpr function macros for user-defined attributes.<br></div></=
div></blockquote><div><br></div><div>What do you mean the &quot;meta-progra=
mming capabilities of constexpr&quot;?=C2=A0 What is a &quot;constexpr func=
tion macro&quot;?=C2=A0 There are &quot;constexpr functions&quot; and &quot=
;function macros&quot;.=C2=A0 One exists at preprocessing, the other during=
 translation proper.=C2=A0 Perhaps you could provide a code example illustr=
ating your idea.</div><div><br></div></div></div></div>
</blockquote></span></div></div></div></div></div></div></div></div><div cl=
ass=3D"HOEnZb"><div class=3D"h5">

<p></p>

-- <br>
<br>
--- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank">std-proposals+unsubscribe@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>
Visit this group at <a href=3D"https://groups.google.com/a/isocpp.org/group=
/std-proposals/" target=3D"_blank">https://groups.google.com/a/isocpp.org/g=
roup/std-proposals/</a>.<br>
</div></div></blockquote></div><br></div></div></div></div>

<p></p>

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

--001a1139c6449272ff052bce391b--

.


Author: "'snk_kid' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Date: Mon, 15 Feb 2016 06:48:48 -0800 (PST)
Raw View
------=_Part_3734_213122110.1455547728729
Content-Type: multipart/alternative;
 boundary="----=_Part_3735_1650817179.1455547728730"

------=_Part_3735_1650817179.1455547728730
Content-Type: text/plain; charset=UTF-8

Do you have link to the details? I'm bit sceptical about what has been
explored, not in the sense of that I don't believe you just more sceptical
about the whats/hows and results, I don't agree on the thought it is
undesirable, dangerous and only has small specific use cases, you could say
the same thing about how people try to use templates to generate code (like
a lot of the stuff in modern c++ design book).

Maybe I'm making too many assumptions about what people know about
meta-programming outside of C++, I probably should have mentioned that I
didn't mean converting all code to AST and you would need to add a few new
language features like code quotations (to tell compiler to convert a
specific piece of C++ code into an AST rep), splicing, hygienic name
generation. Were these things explored?

I don't think mutability really matters here, technically a AST macro could
return a new version that represent the code transformation rather than
modifying the existing AST passed in but for sure we need to able to use
memory (which I think is already being explored).

Anyway I'm sorry I've kind of started to make your post off-topic, coming
back to your proposal is there any reason it couldn't be done with the
existing attributes syntax rather than introduce new syntax?

On Monday, February 15, 2016 at 12:33:38 PM UTC, Andrew Tomazos wrote:
>
> What you are proposing is essentially a standardized AST of the program
> being translated, that is exposed at compile-time as a mutable data
> structure, to the program being translated, itself.  The idea has been
> explored, and it was determined to be undesirable.  It would be very
> complex to specify and implement, has only boutique use cases, and is far
> too dangerous and powerful.
>
> The proposed annotations on the other hand are a simple mechanism to
> associate constant expressions with entities.  They are easy to understand,
> use and implement.
>
> On Mon, Feb 15, 2016 at 12:14 PM, 'snk_kid' via ISO C++ Standard - Future
> Proposals <std-pr...@isocpp.org <javascript:>> wrote:
>
>> Just the way I'm wording things, don't over think it but I will try to
>> explain. I'm sure you know that generalized constant expressions are
>> another way of doing a (limited) form of compile-time meta-programming in
>> C++ (and in my opinion much better than trying to do meta-programming via
>> templates). I say they are "limited" because currently all they can do is
>> compile-time computations, it is missing the ability to transform/generate
>> code (without resorting to horrible hacks/exploits in the language to
>> achieve this such as SFINAE tricks).
>>
>> Basically what I mean is maybe C++ could expand on constexpr functions so
>> they could be used as AST macros, so not just for pure compile-time
>> computations but also codegen. I didn't mean preprocessor macros which are
>> only textual substitution and don't really "know" or respect anything about
>> C++. When I say constexpr function macros, I just mean a constexpr function
>> which manipulates the AST rather than a pure compile-time computation.
>>
>> In the context of user-defined attributes, I was thinking about Nemerle's
>> support for using Nemerle AST macros on-top of .NET's attribute system, check
>> this
>> <https://github.com/rsdn/nemerle/wiki/Macros-tutorial#Macros_in_custom_attributes>
>>
>> It wont be an easy thing to achieve, the biggest hurdle I think would be
>> to standardize a compiler-internal/AST API. Maybe for a first spec of
>> user-defined attributes this would be overkill for the amount of time/work
>> it would require, maybe it should start by doing it similar to the .NET way
>> where you have a (special) base class (like std::exception) that
>> programmers derive from then maybe in the future we could use constexpr
>> functions to reduce the amount of boiler-plate code required to write them
>> while also giving more meta-programming functionality on top of them like
>> in Nemerle. Even without constexpr functions there still needs to be some
>> sort of reflection API for any of this to work.
>>
>> On Monday, February 15, 2016 at 9:52:03 AM UTC, Andrew Tomazos wrote:
>>>
>>> On Mon, Feb 15, 2016 at 10:28 AM, 'snk_kid' via ISO C++ Standard -
>>> Future Proposals <std-pr...@isocpp.org> wrote:
>>>
>>>> The way I'd imagine it working is by expanding on the meta-programming
>>>> capabilities of constexpr such that you could write constexpr function
>>>> macros for user-defined attributes.
>>>>
>>>
>>> What do you mean the "meta-programming capabilities of constexpr"?  What
>>> is a "constexpr function macro"?  There are "constexpr functions" and
>>> "function macros".  One exists at preprocessing, the other during
>>> translation proper.  Perhaps you could provide a code example illustrating
>>> your idea.
>>>
>>> --
>>
>> ---
>> 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-proposal...@isocpp.org <javascript:>.
>> To post to this group, send email to std-pr...@isocpp.org <javascript:>.
>> Visit this group at
>> https://groups.google.com/a/isocpp.org/group/std-proposals/.
>>
>
>

--

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

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

<div dir=3D"ltr">Do you have link to the details? I&#39;m bit sceptical abo=
ut what has been explored, not in the sense of that I don&#39;t believe you=
 just more sceptical about the whats/hows and results, I don&#39;t agree on=
 the thought it is undesirable, dangerous and only has small specific use c=
ases, you could say the same thing about how people try to use templates to=
 generate code (like a lot of the stuff in modern c++ design book).<div><br=
></div><div>Maybe I&#39;m making too many assumptions about what people kno=
w about meta-programming outside of C++, I probably should have mentioned t=
hat I didn&#39;t mean converting all code to AST and you would need to add =
a few new language features like code quotations (to tell compiler to conve=
rt a specific piece of C++ code into an AST rep), splicing, hygienic name g=
eneration. Were these things explored?</div><div><br></div><div>I don&#39;t=
 think mutability really matters here, technically a AST macro could return=
 a new version that represent the code transformation rather than modifying=
 the existing AST passed in but for sure we need to able to use memory (whi=
ch I think is already being explored).</div><div><br></div><div>Anyway I&#3=
9;m sorry I&#39;ve kind of started to make your post off-topic, coming back=
 to your proposal is there any reason it couldn&#39;t be done with the exis=
ting attributes syntax rather than introduce new syntax?</div><div><br>On M=
onday, February 15, 2016 at 12:33:38 PM UTC, Andrew Tomazos wrote:<blockquo=
te class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left:=
 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">What you are proposing=
 is essentially a standardized AST of the program being translated, that is=
 exposed at compile-time as a mutable data structure, to the program being =
translated, itself.=C2=A0 The idea has been explored, and it was determined=
 to be undesirable.=C2=A0 It would be very complex to specify and implement=
, has only boutique use cases, and is far too dangerous and powerful.<div><=
div><br></div><div>The proposed annotations on the other hand are a simple =
mechanism to associate constant expressions with entities.=C2=A0 They are e=
asy to understand, use and implement.</div><div><br></div><div><div><div cl=
ass=3D"gmail_quote">On Mon, Feb 15, 2016 at 12:14 PM, &#39;snk_kid&#39; via=
 ISO C++ Standard - Future Proposals <span dir=3D"ltr">&lt;<a href=3D"javas=
cript:" target=3D"_blank" gdf-obfuscated-mailto=3D"cV3yUJnvHwAJ" rel=3D"nof=
ollow" onmousedown=3D"this.href=3D&#39;javascript:&#39;;return true;" oncli=
ck=3D"this.href=3D&#39;javascript:&#39;;return true;">std-pr...@isocpp.org<=
/a>&gt;</span> wrote:<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">Ju=
st the way I&#39;m wording things, don&#39;t over think it but I will try t=
o explain. I&#39;m sure you know that generalized constant expressions are =
another way of doing a (limited) form of compile-time meta-programming in C=
++ (and in my opinion much better than trying to do meta-programming via te=
mplates). I say they are &quot;limited&quot; because currently all they can=
 do is compile-time computations, it is missing the ability to transform/ge=
nerate code (without resorting to horrible hacks/exploits in the language t=
o achieve this such as SFINAE tricks).<div><br></div><div>Basically what I =
mean is maybe C++ could expand on constexpr functions so they could be used=
 as AST macros, so not just for pure compile-time computations but also cod=
egen. I didn&#39;t mean preprocessor macros which are only textual substitu=
tion and don&#39;t really &quot;know&quot; or respect anything about C++. W=
hen I say constexpr function macros, I just mean a constexpr function which=
 manipulates the AST rather than a pure compile-time computation.</div><div=
><br></div><div>In the context of user-defined attributes, I was thinking a=
bout Nemerle&#39;s support for using Nemerle AST macros on-top of .NET&#39;=
s attribute system, <a href=3D"https://github.com/rsdn/nemerle/wiki/Macros-=
tutorial#Macros_in_custom_attributes" target=3D"_blank" rel=3D"nofollow" on=
mousedown=3D"this.href=3D&#39;https://www.google.com/url?q\75https%3A%2F%2F=
github.com%2Frsdn%2Fnemerle%2Fwiki%2FMacros-tutorial%23Macros_in_custom_att=
ributes\46sa\75D\46sntz\0751\46usg\75AFQjCNEVj0ZsRc-u8RmBiMv8PdpMdgE4QA&#39=
;;return true;" onclick=3D"this.href=3D&#39;https://www.google.com/url?q\75=
https%3A%2F%2Fgithub.com%2Frsdn%2Fnemerle%2Fwiki%2FMacros-tutorial%23Macros=
_in_custom_attributes\46sa\75D\46sntz\0751\46usg\75AFQjCNEVj0ZsRc-u8RmBiMv8=
PdpMdgE4QA&#39;;return true;">check this</a></div><div><br></div><div>It wo=
nt be an easy thing to achieve, the biggest hurdle I think would be to stan=
dardize a compiler-internal/AST API. Maybe for a first spec of user-defined=
 attributes this would be overkill for the amount of time/work it would req=
uire, maybe it should start by doing it similar to the .NET way where you h=
ave a (special) base class (like std::exception) that programmers derive fr=
om then maybe in the future we could use constexpr functions to reduce the =
amount of boiler-plate code required to write them while also giving more m=
eta-programming functionality on top of them like in Nemerle. Even without =
constexpr functions there still needs to be some sort of reflection API for=
 any of this to work.</div><div><div><div><br><div><div><div><div>On Monday=
, February 15, 2016 at 9:52:03 AM UTC, Andrew Tomazos wrote:<span><blockquo=
te class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1p=
x #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div><div class=3D"gmail_qu=
ote">On Mon, Feb 15, 2016 at 10:28 AM, &#39;snk_kid&#39; via ISO C++ Standa=
rd - Future Proposals <span dir=3D"ltr">&lt;<a rel=3D"nofollow">std-pr...@i=
socpp.org</a>&gt;</span> wrote:<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"><div>The way I&#39;d imagine it working is by expanding on the met=
a-programming capabilities of constexpr such that you could write constexpr=
 function macros for user-defined attributes.<br></div></div></blockquote><=
div><br></div><div>What do you mean the &quot;meta-programming capabilities=
 of constexpr&quot;?=C2=A0 What is a &quot;constexpr function macro&quot;?=
=C2=A0 There are &quot;constexpr functions&quot; and &quot;function macros&=
quot;.=C2=A0 One exists at preprocessing, the other during translation prop=
er.=C2=A0 Perhaps you could provide a code example illustrating your idea.<=
/div><div><br></div></div></div></div>
</blockquote></span></div></div></div></div></div></div></div></div><div><d=
iv>

<p></p>

-- <br>
<br>
--- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"javascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"=
cV3yUJnvHwAJ" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;javascript:&=
#39;;return true;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true=
;">std-proposal...@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"javascript:" target=3D"_bla=
nk" gdf-obfuscated-mailto=3D"cV3yUJnvHwAJ" rel=3D"nofollow" onmousedown=3D"=
this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39=
;javascript:&#39;;return true;">std-pr...@isocpp.org</a>.<br>
Visit this group at <a href=3D"https://groups.google.com/a/isocpp.org/group=
/std-proposals/" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.hre=
f=3D&#39;https://groups.google.com/a/isocpp.org/group/std-proposals/&#39;;r=
eturn true;" onclick=3D"this.href=3D&#39;https://groups.google.com/a/isocpp=
..org/group/std-proposals/&#39;;return true;">https://groups.google.com/a/<w=
br>isocpp.org/group/std-<wbr>proposals/</a>.<br>
</div></div></blockquote></div><br></div></div></div></div>
</blockquote></div></div>

<p></p>

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

------=_Part_3735_1650817179.1455547728730--
------=_Part_3734_213122110.1455547728729--

.


Author: Sean Middleditch <sean.middleditch@gmail.com>
Date: Mon, 15 Feb 2016 19:16:09 -0800 (PST)
Raw View
------=_Part_330_1997304316.1455592569726
Content-Type: multipart/alternative;
 boundary="----=_Part_331_1525677914.1455592569726"

------=_Part_331_1525677914.1455592569726
Content-Type: text/plain; charset=UTF-8

On Sunday, February 14, 2016 at 11:52:17 PM UTC-8, Andrew Tomazos wrote:
>
> -  Attributes in C++ are standard or implementation-defined optional hints
> to the implementation that can be ignored (don't have a semantic effect),
> each with a specific meaning built-in to the implementation.  There is no
> use case to "reflect" attributes.
>

You posted this before my post in the other thread, but for anyone not on
that thread:

A valid use case for reflecting attributes would be script binding for
languages where attributes like 'noreturn' are meaningful, or where you
want to extract standard attributes like 'deprecated' to generate
documentation for said bindings. There are likely other attributes offered
by implementations or future C++ standards that likewise are useful to
reflection users.


> I therefore think it makes sense to give them different names, so we don't
> confuse the two.  I also think it makes sense to distinguish the syntax for
> the same reason.
>

Arbitrary syntax to differentiate between weakly-defined conceptual
semantics seems a bit heavy weight, personally. :)


>
>

--

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

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

<div dir=3D"ltr">On Sunday, February 14, 2016 at 11:52:17 PM UTC-8, Andrew =
Tomazos wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-l=
eft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"=
><div><div class=3D"gmail_quote"><div style=3D"font-size:12.8px">- =C2=A0At=
tributes in C++ are standard or implementation-defined optional hints to th=
e implementation that can be ignored (don&#39;t have a semantic effect), ea=
ch with a specific meaning built-in to the implementation.=C2=A0 There is n=
o use case to &quot;reflect&quot; attributes.</div></div></div></div></bloc=
kquote><div><br></div><div>You posted this before my post in the other thre=
ad, but for anyone not on that thread:</div><div><br></div><div>A valid use=
 case for reflecting attributes would be script binding for languages where=
 attributes like &#39;noreturn&#39; are meaningful, or where you want to ex=
tract standard attributes like &#39;deprecated&#39; to generate documentati=
on for said bindings. There are likely other attributes offered by implemen=
tations or future C++ standards that likewise are useful to reflection user=
s.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:=
 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div =
dir=3D"ltr"><div><div class=3D"gmail_quote"><div><span style=3D"font-size:1=
2.8px">I therefore think it makes sense to give them different names, so we=
 don&#39;t confuse the two.=C2=A0 I also think it makes sense to distinguis=
h the syntax for the same reason.</span></div></div></div></div></blockquot=
e><div><br></div><div>Arbitrary syntax to differentiate between weakly-defi=
ned conceptual semantics seems a bit heavy weight, personally. :)</div><div=
>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-le=
ft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">=
<div><div class=3D"gmail_quote"><div>=C2=A0</div></div></div></div>
</blockquote></div>

<p></p>

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

------=_Part_331_1525677914.1455592569726--
------=_Part_330_1997304316.1455592569726--

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Tue, 16 Feb 2016 07:00:20 +0100
Raw View
--001a114413863f062c052bdcd9cf
Content-Type: text/plain; charset=UTF-8

On Tue, Feb 16, 2016 at 4:16 AM, Sean Middleditch <
sean.middleditch@gmail.com> wrote:

> On Sunday, February 14, 2016 at 11:52:17 PM UTC-8, Andrew Tomazos wrote:
>>
>> -  Attributes in C++ are standard or implementation-defined optional
>> hints to the implementation that can be ignored (don't have a semantic
>> effect), each with a specific meaning built-in to the implementation.
>> There is no use case to "reflect" attributes.
>>
>
> You posted this before my post in the other thread, but for anyone not on
> that thread:
>
> A valid use case for reflecting attributes would be script binding for
> languages where attributes like 'noreturn' are meaningful, or where you
> want to extract standard attributes like 'deprecated' to generate
> documentation for said bindings. There are likely other attributes offered
> by implementations or future C++ standards that likewise are useful to
> reflection users.
>

These sort of use cases where you are trying to transform/propogate C++
into some equivalent form could be used to justify reflecting the entire
AST, and any of the semantic information present in C++ code.   Such
reasoning isn't specific to attributes.  We are simply not going to have
C++ reflection that can reflect the entire AST, not just because it's too
big - but because people actively oppose such a powerful reflection
mechanism.  The correct way to address these use cases is to write a
prebuild code generator tool that reads and parses the code into an AST
(for example as a libclang plugin), uses that data, and then outputs the
generated/transformed entities as C++ code.

That said, from within the language, by walking the names and types of
public members you will be able to expose a basic language binding or RMI,
provided the types used are appropriately constrained - but it won't be
able to do everything, and isn't intended to be able to.

--

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

--001a114413863f062c052bdcd9cf
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Tue, Feb 16, 2016 at 4:16 AM, Sean Middleditch <span dir=3D"ltr">&lt=
;<a href=3D"mailto:sean.middleditch@gmail.com" target=3D"_blank">sean.middl=
editch@gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote"=
 style=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:=
rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir=3D"ltr"=
><span class=3D"">On Sunday, February 14, 2016 at 11:52:17 PM UTC-8, Andrew=
 Tomazos wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0p=
x 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex"><div dir=3D"ltr"><div><div class=3D"gmail_q=
uote"><div style=3D"font-size:12.8px">- =C2=A0Attributes in C++ are standar=
d or implementation-defined optional hints to the implementation that can b=
e ignored (don&#39;t have a semantic effect), each with a specific meaning =
built-in to the implementation.=C2=A0 There is no use case to &quot;reflect=
&quot; attributes.</div></div></div></div></blockquote><div><br></div></spa=
n><div>You posted this before my post in the other thread, but for anyone n=
ot on that thread:</div><div><br></div><div>A valid use case for reflecting=
 attributes would be script binding for languages where attributes like &#3=
9;noreturn&#39; are meaningful, or where you want to extract standard attri=
butes like &#39;deprecated&#39; to generate documentation for said bindings=
.. There are likely other attributes offered by implementations or future C+=
+ standards that likewise are useful to reflection users.</div></div></bloc=
kquote><div><br></div><div>These sort of use cases where you are trying to =
transform/propogate C++ into some equivalent form could be used to justify =
reflecting the entire AST, and any of the semantic information present in C=
++ code. =C2=A0 Such reasoning isn&#39;t specific to attributes.=C2=A0 We a=
re simply not going to have C++ reflection that can reflect the entire AST,=
 not just because it&#39;s too big - but because people actively oppose suc=
h a powerful reflection mechanism.=C2=A0 The correct way to address these u=
se cases is to write a prebuild code generator tool that reads and parses t=
he code into an AST (for example as a libclang plugin), uses that data, and=
 then outputs the generated/transformed entities as C++ code.</div><div><br=
></div><div>That said, from within the language, by walking the names and t=
ypes of public members you will be able to expose a basic language binding =
or RMI, provided the types used are appropriately constrained - but it won&=
#39;t be able to do everything, and isn&#39;t intended to be able to.</div>=
<div><br></div></div></div></div>

<p></p>

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

--001a114413863f062c052bdcd9cf--

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Tue, 16 Feb 2016 08:41:46 -0800 (PST)
Raw View
------=_Part_146_901268371.1455640906403
Content-Type: multipart/alternative;
 boundary="----=_Part_147_2068426219.1455640906404"

------=_Part_147_2068426219.1455640906404
Content-Type: text/plain; charset=UTF-8

On Tuesday, February 16, 2016 at 1:00:24 AM UTC-5, Andrew Tomazos wrote:
>
> On Tue, Feb 16, 2016 at 4:16 AM, Sean Middleditch <sean.mid...@gmail.com
> <javascript:>> wrote:
>
>> On Sunday, February 14, 2016 at 11:52:17 PM UTC-8, Andrew Tomazos wrote:
>>>
>>> -  Attributes in C++ are standard or implementation-defined optional
>>> hints to the implementation that can be ignored (don't have a semantic
>>> effect), each with a specific meaning built-in to the implementation.
>>> There is no use case to "reflect" attributes.
>>>
>>
>> You posted this before my post in the other thread, but for anyone not on
>> that thread:
>>
>> A valid use case for reflecting attributes would be script binding for
>> languages where attributes like 'noreturn' are meaningful, or where you
>> want to extract standard attributes like 'deprecated' to generate
>> documentation for said bindings. There are likely other attributes offered
>> by implementations or future C++ standards that likewise are useful to
>> reflection users.
>>
>
> These sort of use cases where you are trying to transform/propogate C++
> into some equivalent form could be used to justify reflecting the entire
> AST, and any of the semantic information present in C++ code.
>

That's not what he said at all. He never suggested using reflection to
completely automate script binding; just for being able to detect features
of a function.

Furthermore, the last thing we need is two separate syntaxes for what is
essentially the same thing: the ability to tag a language construct with an
arbitrary value that something outside of the standard can recognize. I see
no reason to separate "compiler option" attributes from "in-code
reflection" annotations. It makes the spec more complicated by having two
separate mechanisms, and makes the language uglier to read.

We should never have reason to write this:

    [[noreturn]] @noreturn SomeFunc(...);

--

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

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

<div dir=3D"ltr">On Tuesday, February 16, 2016 at 1:00:24 AM UTC-5, Andrew =
Tomazos wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-l=
eft: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"=
><div><div class=3D"gmail_quote">On Tue, Feb 16, 2016 at 4:16 AM, Sean Midd=
leditch <span dir=3D"ltr">&lt;<a href=3D"javascript:" target=3D"_blank" gdf=
-obfuscated-mailto=3D"84yY5rgoIAAJ" rel=3D"nofollow" onmousedown=3D"this.hr=
ef=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39;javasc=
ript:&#39;;return true;">sean.mid...@gmail.com</a>&gt;</span> wrote:<br><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef=
t-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padd=
ing-left:1ex"><div dir=3D"ltr"><span>On Sunday, February 14, 2016 at 11:52:=
17 PM UTC-8, Andrew Tomazos wrote:<blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(20=
4,204,204);border-left-style:solid;padding-left:1ex"><div dir=3D"ltr"><div>=
<div class=3D"gmail_quote"><div style=3D"font-size:12.8px">- =C2=A0Attribut=
es in C++ are standard or implementation-defined optional hints to the impl=
ementation that can be ignored (don&#39;t have a semantic effect), each wit=
h a specific meaning built-in to the implementation.=C2=A0 There is no use =
case to &quot;reflect&quot; attributes.</div></div></div></div></blockquote=
><div><br></div></span><div>You posted this before my post in the other thr=
ead, but for anyone not on that thread:</div><div><br></div><div>A valid us=
e case for reflecting attributes would be script binding for languages wher=
e attributes like &#39;noreturn&#39; are meaningful, or where you want to e=
xtract standard attributes like &#39;deprecated&#39; to generate documentat=
ion for said bindings. There are likely other attributes offered by impleme=
ntations or future C++ standards that likewise are useful to reflection use=
rs.</div></div></blockquote><div><br></div><div>These sort of use cases whe=
re you are trying to transform/propogate C++ into some equivalent form coul=
d be used to justify reflecting the entire AST, and any of the semantic inf=
ormation present in C++ code.</div></div></div></div></blockquote><div><br>=
That&#39;s not what he said at all. He never suggested using reflection to =
completely automate script binding; just for being able to detect features =
of a function.<br><br>Furthermore, the last thing we need is two separate s=
yntaxes for what is essentially the same thing: the ability to tag a langua=
ge construct with an arbitrary value that something outside of the standard=
 can recognize. I see no reason to separate &quot;compiler option&quot; att=
ributes from &quot;in-code reflection&quot; annotations. It makes the spec =
more complicated by having two separate mechanisms, and makes the language =
uglier to read.<br><br>We should never have reason to write this:<br><br>=
=C2=A0=C2=A0=C2=A0 [[noreturn]] @noreturn SomeFunc(...);<br></div></div>

<p></p>

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

------=_Part_147_2068426219.1455640906404--
------=_Part_146_901268371.1455640906403--

.


Author: Sean Middleditch <sean@middleditch.us>
Date: Tue, 16 Feb 2016 08:43:05 -0800
Raw View
On Mon, Feb 15, 2016 at 10:00 PM, Andrew Tomazos
<andrewtomazos@gmail.com> wrote:
> people actively oppose such a powerful reflection mechanism.  The correct
> way to address these use cases is to write a prebuild code generator tool
> that reads and parses the code into an AST (for example as a libclang
> plugin), uses that data, and then outputs the generated/transformed entities
> as C++ code.

This is not the "correct" way, because it essentially doubles compile
times for every platform that doesn't use Clang as its primary
compiler, not to mention massively complicating the build pipeline by
requiring some home-grown preprocessor.

Don't get me wrong - today, that's probably the best choice we have,
but only because we still lack static reflection capabilities.

Static reflection will do just about everything we need, at least
based on every single proposal I've seen so far, even the simpler
ones. We don't need an AST. I just need to be able to reflect a
specified type/function through a FFI wrapper. Easy. We do it all the
time in C++ today, only we need to manually respecify the names,
types, and signatures of every function or member. Not allowing
reflection of attributes is the only potential problem I can see.
Frankly that's a really really _minor_ problem, too, but it seems
outright boneheaded to me to intentionally build that limitation into
any proposal under the belief that there's "no use case" even though
there is one that has now been explicitly stated.

The claim that script binding doesn't make a valid use case for
reflection is also mind boggling. That's basically one of the single
most frequently cited use cases for reflection. If the answer is
"write a Clang plugin" then why are we even considering adding
reflection to C++ at all? A Clang plugin obviates every single use
case for builtin reflection there is... and then some. :)

--

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

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Wed, 17 Feb 2016 09:18:57 +0100
Raw View
--001a11455080c97b56052bf2e652
Content-Type: text/plain; charset=UTF-8

On Tue, Feb 16, 2016 at 5:43 PM, Sean Middleditch <sean@middleditch.us>
wrote:

> The claim that script binding doesn't make a valid use case for
> reflection is also mind boggling. That's basically one of the single
> most frequently cited use cases for reflection. If the answer is
> "write a Clang plugin" then why are we even considering adding
> reflection to C++ at all? A Clang plugin obviates every single use
> case for builtin reflection there is... and then some. :)


Some of the reflection use cases I see that we can not already achieve in
C++ are:

- converting an enumerator to and from a string.
- traversing all the enumerators of an enumeration
- treating a simple struct as a tuple
- serializing and deserializing a subset of types
- visiting the subobject lattice of an object
- creating a run-time lookup table for the public inteface of an object
- checking constraints on entities

There is a spectrum of use cases with these simple things on one side and
increasingly more complex and intricate ones going up toward the other side.

We need to draw the line at some point on the spectrum.  On one side of the
line you can use built-in reflection.  On the other side you will write a
prebuild tool, like moc.  I only mentioned clang because it provides a
modular system to enable writing such tools in an easier way than doing it
from scratch.

I don't think full-stack automated script binding generation should be in
scope for built-in C++ reflection.  Anything complex enough to support such
a use case will not achieve consensus on the grounds that it is too
powerful.

--

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

--001a11455080c97b56052bf2e652
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, Feb 16, 2016 at 5:43 PM, Sean Middleditch <span dir=3D"ltr">&lt;<a href=
=3D"mailto:sean@middleditch.us" target=3D"_blank">sean@middleditch.us</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">The claim that script bi=
nding doesn&#39;t make a valid use case for<br>
reflection is also mind boggling. That&#39;s basically one of the single<br=
>
most frequently cited use cases for reflection. If the answer is<br>
&quot;write a Clang plugin&quot; then why are we even considering adding<br=
>
reflection to C++ at all? A Clang plugin obviates every single use<br>
case for builtin reflection there is... and then some. :)</blockquote><div>=
=C2=A0</div><div>Some of the reflection use cases I see that we can not alr=
eady achieve in C++ are:</div><div><br></div><div>- converting an enumerato=
r to and from a string.</div><div>- traversing all the enumerators of an en=
umeration</div><div>- treating a simple struct as a tuple</div><div>- seria=
lizing and deserializing a subset of types</div><div>- visiting the subobje=
ct lattice of an object</div><div>- creating a run-time lookup table for th=
e public inteface of an object</div><div>- checking constraints on entities=
</div><div><br></div><div>There is a spectrum of use cases with these simpl=
e things on one side and increasingly more complex and intricate ones going=
 up toward the other side.</div><div><br></div><div>We need to draw the lin=
e at some point on the spectrum.=C2=A0 On one side of the line you can use =
built-in reflection.=C2=A0 On the other side you will write a prebuild tool=
, like moc.=C2=A0 I only mentioned clang because it provides a modular syst=
em to enable writing such tools in an easier way than doing it from scratch=
..</div><div><br></div><div>I don&#39;t think full-stack automated script bi=
nding generation should be in scope for built-in C++ reflection.=C2=A0 Anyt=
hing complex enough to support such a use case will not achieve consensus o=
n the grounds that it is too powerful.</div><div><br></div></div></div></di=
v>

<p></p>

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

--001a11455080c97b56052bf2e652--

.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Wed, 17 Feb 2016 10:22:38 +0200
Raw View
On 17 February 2016 at 10:18, Andrew Tomazos <andrewtomazos@gmail.com> wrote:
> I don't think full-stack automated script binding generation should be in
> scope for built-in C++ reflection.  Anything complex enough to support such
> a use case will not achieve consensus on the grounds that it is too
> powerful.

That's mere speculation.

--

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

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Wed, 17 Feb 2016 09:30:00 +0100
Raw View
--001a1144102a4facdc052bf30e24
Content-Type: text/plain; charset=UTF-8

On Wed, Feb 17, 2016 at 9:22 AM, Ville Voutilainen <
ville.voutilainen@gmail.com> wrote:

> On 17 February 2016 at 10:18, Andrew Tomazos <andrewtomazos@gmail.com>
> wrote:
> > I don't think full-stack automated script binding generation should be in
> > scope for built-in C++ reflection.  Anything complex enough to support
> such
> > a use case will not achieve consensus on the grounds that it is too
> > powerful.
>
> That's mere speculation.


It's a matter of record that SG7 has stated "full AST reflection is out of
scope" and that "we don't want nuclear weapons".  You said yesterday that "C++
is not, by design, a language where the core language is (user-)extensible/
programmable".

My interpretation is that we don't want built-in reflection to be too
powerful, and I agree.

--

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

--001a1144102a4facdc052bf30e24
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 W=
ed, Feb 17, 2016 at 9:22 AM, Ville Voutilainen <span dir=3D"ltr">&lt;<a hre=
f=3D"mailto:ville.voutilainen@gmail.com" target=3D"_blank">ville.voutilaine=
n@gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(2=
04,204,204);border-left-style:solid;padding-left:1ex"><span>On 17 February =
2016 at 10:18, Andrew Tomazos &lt;<a href=3D"mailto:andrewtomazos@gmail.com=
" target=3D"_blank">andrewtomazos@gmail.com</a>&gt; wrote:<br>
&gt; I don&#39;t think full-stack automated script binding generation shoul=
d be in<br>
&gt; scope for built-in C++ reflection.=C2=A0 Anything complex enough to su=
pport such<br>
&gt; a use case will not achieve consensus on the grounds that it is too<br=
>
&gt; powerful.<br>
<br>
</span>That&#39;s mere speculation.</blockquote><div><br></div><div>It&#39;=
s a matter of record that SG7 has stated &quot;full AST reflection is out o=
f scope&quot; and that &quot;we don&#39;t want nuclear weapons&quot;.=C2=A0=
 You said yesterday that &quot;<span style=3D"font-size:12.8px">C++ is not,=
 by design, a language where the core language is=C2=A0</span><span style=
=3D"font-size:12.8px">(user-)extensible/</span><span style=3D"font-size:12.=
8px">programmable&quot;.</span><br></div><div><br></div><div>My interpretat=
ion is that we don&#39;t want built-in reflection to be too powerful, and I=
 agree.</div><div><br></div></div></div></div>

<p></p>

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

--001a1144102a4facdc052bf30e24--

.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Wed, 17 Feb 2016 10:33:24 +0200
Raw View
On 17 February 2016 at 10:30, Andrew Tomazos <andrewtomazos@gmail.com> wrote:
> On Wed, Feb 17, 2016 at 9:22 AM, Ville Voutilainen
> <ville.voutilainen@gmail.com> wrote:
>>
>> On 17 February 2016 at 10:18, Andrew Tomazos <andrewtomazos@gmail.com>
>> wrote:
>> > I don't think full-stack automated script binding generation should be
>> > in
>> > scope for built-in C++ reflection.  Anything complex enough to support
>> > such
>> > a use case will not achieve consensus on the grounds that it is too
>> > powerful.
>>
>> That's mere speculation.
>
>
> It's a matter of record that SG7 has stated "full AST reflection is out of
> scope" and that "we don't want nuclear weapons".  You said yesterday that
> "C++ is not, by design, a language where the core language is
> (user-)extensible/programmable".

Reflection doesn't make the core language extensible/programmable. It allows
libraries built on top of reflection to make the language
extensible/programmable.

> My interpretation is that we don't want built-in reflection to be too
> powerful, and I agree.

You're free to draw your conclusions, but EWG has never been asked what they
think of attribute reflection, and they have never been asked about the current
reflection proposals.

--

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

.


Author: Sean Middleditch <sean@middleditch.us>
Date: Wed, 17 Feb 2016 05:58:21 -0800
Raw View
On Wed, Feb 17, 2016 at 12:18 AM, Andrew Tomazos
<andrewtomazos@gmail.com> wrote:
> On Tue, Feb 16, 2016 at 5:43 PM, Sean Middleditch <sean@middleditch.us>
> wrote:
>>
>> The claim that script binding doesn't make a valid use case for
>> reflection is also mind boggling. That's basically one of the single
>> most frequently cited use cases for reflection. If the answer is
>> "write a Clang plugin" then why are we even considering adding
>> reflection to C++ at all? A Clang plugin obviates every single use
>> case for builtin reflection there is... and then some. :)
>
> We need to draw the line at some point on the spectrum.  On one side of the
> line you can use built-in reflection.  On the other side you will write a
> prebuild tool, like moc.  I only mentioned clang because it provides a
> modular system to enable writing such tools in an easier way than doing it
> from scratch.

I think you're still ignoring the point that this functionality is
trivial to do today, minus the part that I have to manually write the
reflection system.

The point of reflection is to inspect declarations. Names, types,
qualifiers, signatures, enumeration values, annotations, etc. Why
would attributes be left out when literally everything else about a
declaration is accessible?

It's not "AST reflection" because it doesn't reflect expressions or
statements. It's not code generations because it doesn't allow me to
synthesize a new type on the fly. It's just good ol' simple static
reflection. Nothing more.

The only missing feature from C++ that makes us build custom
reflection systems for script binding (or UI binding, or I/O
serialization, or enum value<->name mapping, etc.) is that we can't
(a) enumerate members and their names, types, and signatures, and (b)
we don't have anything like annotations and attributes.

This isn't some huge magical mega-beast of an AST reflector. It's...
script binding. Which is frequently delivered as a pure C++ library,
e.g. Boost.Python, or even a header-only library, e.g. LuaBridge.

Reflection gets rid of much of the above ball of mud. Annotations gets
rid of the rest of it. Not being able to also reflect attributes -
despite them being the same thing as an annotation ("except
arbitrarily different, because") - just means that we're back to
Jason's example of:

  [[deprecated("lame")]]
  @deprecated("still lame, dude")
  void old_function();

Such a limitation is just silly to intentionally encode when there's
not yet even the beginnings of a technical reason to do so. Why would
we want to consume @ and an all-new grammatical/parsing burden for
user-annotations when we have the perfectly good [[ ]] syntax already
there? Why would we want to strip the annotations from a declaration
when reflecting when nothing else, and when there's a use case to have
at least some of them?

>
> --
>
> ---
> 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/kHboBaYTj0A/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.
> Visit this group at
> https://groups.google.com/a/isocpp.org/group/std-proposals/.



--
Sean Middleditch
http://seanmiddleditch.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.
Visit this group at https://groups.google.com/a/isocpp.org/group/std-proposals/.

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Wed, 17 Feb 2016 06:56:57 -0800 (PST)
Raw View
------=_Part_42_1956551654.1455721017438
Content-Type: multipart/alternative;
 boundary="----=_Part_43_1358783592.1455721017438"

------=_Part_43_1358783592.1455721017438
Content-Type: text/plain; charset=UTF-8

On Wednesday, February 17, 2016 at 3:19:00 AM UTC-5, Andrew Tomazos wrote:
>
> On Tue, Feb 16, 2016 at 5:43 PM, Sean Middleditch <se...@middleditch.us
> <javascript:>> wrote:
> We need to draw the line at some point on the spectrum.  On one side of
> the line you can use built-in reflection.  On the other side you will write
> a prebuild tool, like moc.  I only mentioned clang because it provides a
> modular system to enable writing such tools in an easier way than doing it
> from scratch.
>
> I don't think full-stack automated script binding generation should be in
> scope for built-in C++ reflection.  Anything complex enough to support such
> a use case will not achieve consensus on the grounds that it is too
> powerful.
>

Nonsense. The only things you need, reflection-wise, to make a script
binding system are:

1: The ability to designate and detect which types&functions are to be made
available to the scripting language.

2: The ability to inspect the declarations of those types&functions. For
types, you need to inspect the (public) members of those types for things
to expose to the scripting language. For functions, you need to inspect the
return type and parameter lists.

None of this requires anything even remotely like AST
inspection/manipulation. Indeed, the only thing missing is a specific
syntax for designating those types/functions you want to export.

And attributes would be a perfectly legitimate way to do 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.
Visit this group at https://groups.google.com/a/isocpp.org/group/std-proposals/.

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

<div dir=3D"ltr">On Wednesday, February 17, 2016 at 3:19:00 AM UTC-5, Andre=
w Tomazos 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 Tue, Feb 16, 2016 at 5:43 PM, Sean Mi=
ddleditch <span dir=3D"ltr">&lt;<a href=3D"javascript:" target=3D"_blank" g=
df-obfuscated-mailto=3D"pYNUDAISAAAJ" rel=3D"nofollow" onmousedown=3D"this.=
href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39;java=
script:&#39;;return true;">se...@middleditch.us</a>&gt;</span> wrote:<div><=
/div><div>We need to draw the line at some point on the spectrum.=C2=A0 On =
one side of the line you can use built-in reflection.=C2=A0 On the other si=
de you will write a prebuild tool, like moc.=C2=A0 I only mentioned clang b=
ecause it provides a modular system to enable writing such tools in an easi=
er way than doing it from scratch.</div><div><br></div><div>I don&#39;t thi=
nk full-stack automated script binding generation should be in scope for bu=
ilt-in C++ reflection.=C2=A0 Anything complex enough to support such a use =
case will not achieve consensus on the grounds that it is too powerful.</di=
v></div></div></div></blockquote><div><br>Nonsense. The only things you nee=
d, reflection-wise, to make a script binding system are:<br><br>1: The abil=
ity to designate and detect which types&amp;functions are to be made availa=
ble to the scripting language.<br><br>2: The ability to inspect the declara=
tions of those types&amp;functions. For types, you need to inspect the (pub=
lic) members of those types for things to expose to the scripting language.=
 For functions, you need to inspect the return type and parameter lists.<br=
><br>None of this requires anything even remotely like AST inspection/manip=
ulation. Indeed, the only thing missing is a specific syntax for designatin=
g those types/functions you want to export.<br><br>And attributes would be =
a perfectly legitimate way to do that.<br></div></div>

<p></p>

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

------=_Part_43_1358783592.1455721017438--
------=_Part_42_1956551654.1455721017438--

.


Author: inkwizytoryankes@gmail.com
Date: Thu, 18 Feb 2016 08:49:04 -0800 (PST)
Raw View
------=_Part_264_155335679.1455814144936
Content-Type: multipart/alternative;
 boundary="----=_Part_265_158654501.1455814144936"

------=_Part_265_158654501.1455814144936
Content-Type: text/plain; charset=UTF-8


On Wednesday, February 17, 2016 at 2:58:25 PM UTC+1, Sean Middleditch wrote:
>
>
> Reflection gets rid of much of the above ball of mud. Annotations gets
> rid of the rest of it. Not being able to also reflect attributes -
> despite them being the same thing as an annotation ("except
> arbitrarily different, because") - just means that we're back to
> Jason's example of:
>
>   [[deprecated("lame")]]
>   @deprecated("still lame, dude")
>   void old_function();
>
> Such a limitation is just silly to intentionally encode when there's
> not yet even the beginnings of a technical reason to do so. Why would
> we want to consume @ and an all-new grammatical/parsing burden for
> user-annotations when we have the perfectly good [[ ]] syntax already
> there? Why would we want to strip the annotations from a declaration
> when reflecting when nothing else, and when there's a use case to have
> at least some of them?
>
>
> --
> Sean Middleditch
> http://seanmiddleditch.com


Maybe mix both? Create subset of attributes that will be visible to
reflection:

[[@visibleForUser, canBeIgnored, @anotherVisible]]
class X{};

//or

[[user::visbile, gnu::notVisible]]
class Y{};


--

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

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

<div dir=3D"ltr"><br>On Wednesday, February 17, 2016 at 2:58:25 PM UTC+1, S=
ean Middleditch wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;=
margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><br>Refl=
ection gets rid of much of the above ball of mud. Annotations gets
<br>rid of the rest of it. Not being able to also reflect attributes -
<br>despite them being the same thing as an annotation (&quot;except
<br>arbitrarily different, because&quot;) - just means that we&#39;re back =
to
<br>Jason&#39;s example of:
<br>
<br>=C2=A0 [[deprecated(&quot;lame&quot;)]]
<br>=C2=A0 @deprecated(&quot;still lame, dude&quot;)
<br>=C2=A0 void old_function();
<br>
<br>Such a limitation is just silly to intentionally encode when there&#39;=
s
<br>not yet even the beginnings of a technical reason to do so. Why would
<br>we want to consume @ and an all-new grammatical/parsing burden for
<br>user-annotations when we have the perfectly good [[ ]] syntax already
<br>there? Why would we want to strip the annotations from a declaration
<br>when reflecting when nothing else, and when there&#39;s a use case to h=
ave
<br>at least some of them?
<br>
<br>
<br>--=20
<br>Sean Middleditch
<br><a href=3D"http://seanmiddleditch.com" target=3D"_blank" rel=3D"nofollo=
w" onmousedown=3D"this.href=3D&#39;http://www.google.com/url?q\75http%3A%2F=
%2Fseanmiddleditch.com\46sa\75D\46sntz\0751\46usg\75AFQjCNHx3WLavT-kbToOv7I=
L4uvcN5l-vg&#39;;return true;" onclick=3D"this.href=3D&#39;http://www.googl=
e.com/url?q\75http%3A%2F%2Fseanmiddleditch.com\46sa\75D\46sntz\0751\46usg\7=
5AFQjCNHx3WLavT-kbToOv7IL4uvcN5l-vg&#39;;return true;">http://seanmiddledit=
ch.com</a></blockquote><div>=C2=A0<br>Maybe mix both? Create subset of attr=
ibutes that will be visible to reflection:<br><br><div class=3D"prettyprint=
" style=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187=
, 187); border-style: solid; border-width: 1px; word-wrap: break-word;"><co=
de class=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color=
: #660;" class=3D"styled-by-prettify">[[</span><span style=3D"color: #066;"=
 class=3D"styled-by-prettify">@visibleForUser</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> canBeIgnored</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: #066;" class=3D"styled-by=
-prettify">@anotherVisible</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">]]</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify=
">class</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> X<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">{};</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"><br><br></span><sp=
an style=3D"color: #800;" class=3D"styled-by-prettify">//or</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"><br><br></span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">[[</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify">user</span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">::</span><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify">visbile</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">,</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> gnu</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">::</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
>notVisible</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>]]</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></s=
pan><span style=3D"color: #008;" class=3D"styled-by-prettify">class</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"> Y</span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">{};</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"><br></span></div></code></div><br=
><br></div></div>

<p></p>

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

------=_Part_265_158654501.1455814144936--
------=_Part_264_155335679.1455814144936--

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Thu, 18 Feb 2016 10:13:09 -0800 (PST)
Raw View
------=_Part_485_478301661.1455819189757
Content-Type: multipart/alternative;
 boundary="----=_Part_486_1041701996.1455819189764"

------=_Part_486_1041701996.1455819189764
Content-Type: text/plain; charset=UTF-8



On Thursday, February 18, 2016 at 11:49:05 AM UTC-5, inkwizyt...@gmail.com
wrote:
>
>
> On Wednesday, February 17, 2016 at 2:58:25 PM UTC+1, Sean Middleditch
> wrote:
>>
>>
>> Reflection gets rid of much of the above ball of mud. Annotations gets
>> rid of the rest of it. Not being able to also reflect attributes -
>> despite them being the same thing as an annotation ("except
>> arbitrarily different, because") - just means that we're back to
>> Jason's example of:
>>
>>   [[deprecated("lame")]]
>>   @deprecated("still lame, dude")
>>   void old_function();
>>
>> Such a limitation is just silly to intentionally encode when there's
>> not yet even the beginnings of a technical reason to do so. Why would
>> we want to consume @ and an all-new grammatical/parsing burden for
>> user-annotations when we have the perfectly good [[ ]] syntax already
>> there? Why would we want to strip the annotations from a declaration
>> when reflecting when nothing else, and when there's a use case to have
>> at least some of them?
>>
>>
>> --
>> Sean Middleditch
>> http://seanmiddleditch.com
>
>
> Maybe mix both? Create subset of attributes that will be visible to
> reflection:
>
> [[@visibleForUser, canBeIgnored, @anotherVisible]]
> class X{};
>
> //or
>
> [[user::visbile, gnu::notVisible]]
> class Y{};
>
>
>

I don't know why would you specifically want an attribute to be *invisible*
to reflection. It seems to me that, if there is utility in being able to
reflect attributes, you should be able to reflect *all* of them. You can
just ignore the ones that don't matter.

--

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

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

<div dir=3D"ltr"><br><br>On Thursday, February 18, 2016 at 11:49:05 AM UTC-=
5, inkwizyt...@gmail.com wrote:<blockquote class=3D"gmail_quote" style=3D"m=
argin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"=
><div dir=3D"ltr"><br>On Wednesday, February 17, 2016 at 2:58:25 PM UTC+1, =
Sean Middleditch wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0;=
margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><br>Reflecti=
on gets rid of much of the above ball of mud. Annotations gets
<br>rid of the rest of it. Not being able to also reflect attributes -
<br>despite them being the same thing as an annotation (&quot;except
<br>arbitrarily different, because&quot;) - just means that we&#39;re back =
to
<br>Jason&#39;s example of:
<br>
<br>=C2=A0 [[deprecated(&quot;lame&quot;)]]
<br>=C2=A0 @deprecated(&quot;still lame, dude&quot;)
<br>=C2=A0 void old_function();
<br>
<br>Such a limitation is just silly to intentionally encode when there&#39;=
s
<br>not yet even the beginnings of a technical reason to do so. Why would
<br>we want to consume @ and an all-new grammatical/parsing burden for
<br>user-annotations when we have the perfectly good [[ ]] syntax already
<br>there? Why would we want to strip the annotations from a declaration
<br>when reflecting when nothing else, and when there&#39;s a use case to h=
ave
<br>at least some of them?
<br>
<br>
<br>--=20
<br>Sean Middleditch
<br><a href=3D"http://seanmiddleditch.com" rel=3D"nofollow" target=3D"_blan=
k" onmousedown=3D"this.href=3D&#39;http://www.google.com/url?q\75http%3A%2F=
%2Fseanmiddleditch.com\46sa\75D\46sntz\0751\46usg\75AFQjCNHx3WLavT-kbToOv7I=
L4uvcN5l-vg&#39;;return true;" onclick=3D"this.href=3D&#39;http://www.googl=
e.com/url?q\75http%3A%2F%2Fseanmiddleditch.com\46sa\75D\46sntz\0751\46usg\7=
5AFQjCNHx3WLavT-kbToOv7IL4uvcN5l-vg&#39;;return true;">http://seanmiddledit=
ch.com</a></blockquote><div>=C2=A0<br>Maybe mix both? Create subset of attr=
ibutes that will be visible to reflection:<br><br><div style=3D"background-=
color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;bor=
der-width:1px;word-wrap:break-word"><code><div><span style=3D"color:#660">[=
[</span><span style=3D"color:#066">@visibleForUser</span><span style=3D"col=
or:#660">,</span><span style=3D"color:#000"> canBeIgnored</span><span style=
=3D"color:#660">,</span><span style=3D"color:#000"> </span><span style=3D"c=
olor:#066">@anotherVisible</span><span style=3D"color:#660">]]</span><span =
style=3D"color:#000"><br></span><span style=3D"color:#008">class</span><spa=
n style=3D"color:#000"> X</span><span style=3D"color:#660">{};</span><span =
style=3D"color:#000"><br><br></span><span style=3D"color:#800">//or</span><=
span style=3D"color:#000"><br><br></span><span style=3D"color:#660">[[</spa=
n><span style=3D"color:#000">user</span><span style=3D"color:#660">::</span=
><span style=3D"color:#000">visbile</span><span style=3D"color:#660">,</spa=
n><span style=3D"color:#000"> gnu</span><span style=3D"color:#660">::</span=
><span style=3D"color:#000">notVisible</span><span style=3D"color:#660">]]<=
/span><span style=3D"color:#000"><br></span><span style=3D"color:#008">clas=
s</span><span style=3D"color:#000"> Y</span><span style=3D"color:#660">{};<=
/span><span style=3D"color:#000"><br></span></div></code></div><br><br></di=
v></div></blockquote><div><br><br>I don&#39;t know why would you specifical=
ly want an attribute to be <i>invisible</i> to reflection. It seems to me t=
hat, if there is utility in being able to reflect attributes, you should be=
 able to reflect <i>all</i> of them. You can just ignore the ones that don&=
#39;t matter.<br></div></div>

<p></p>

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

------=_Part_486_1041701996.1455819189764--
------=_Part_485_478301661.1455819189757--

.


Author: Andrew Tomazos <andrewtomazos@gmail.com>
Date: Thu, 18 Feb 2016 19:28:56 +0100
Raw View
--001a1144102a15ca34052c0f8a80
Content-Type: text/plain; charset=UTF-8

On Thu, Feb 18, 2016 at 7:13 PM, Nicol Bolas <jmckesson@gmail.com> wrote:

>
>
> On Thursday, February 18, 2016 at 11:49:05 AM UTC-5, inkwizyt...@gmail.com
> wrote:
>>
>>
>> On Wednesday, February 17, 2016 at 2:58:25 PM UTC+1, Sean Middleditch
>> wrote:
>>>
>>>
>>> Reflection gets rid of much of the above ball of mud. Annotations gets
>>> rid of the rest of it. Not being able to also reflect attributes -
>>> despite them being the same thing as an annotation ("except
>>> arbitrarily different, because") - just means that we're back to
>>> Jason's example of:
>>>
>>>   [[deprecated("lame")]]
>>>   @deprecated("still lame, dude")
>>>   void old_function();
>>>
>>> Such a limitation is just silly to intentionally encode when there's
>>> not yet even the beginnings of a technical reason to do so. Why would
>>> we want to consume @ and an all-new grammatical/parsing burden for
>>> user-annotations when we have the perfectly good [[ ]] syntax already
>>> there? Why would we want to strip the annotations from a declaration
>>> when reflecting when nothing else, and when there's a use case to have
>>> at least some of them?
>>>
>>>
>>> --
>>> Sean Middleditch
>>> http://seanmiddleditch.com
>>
>>
>> Maybe mix both? Create subset of attributes that will be visible to
>> reflection:
>>
>> [[@visibleForUser, canBeIgnored, @anotherVisible]]
>> class X{};
>>
>> //or
>>
>> [[user::visbile, gnu::notVisible]]
>> class Y{};
>>
>>
>>
>
> I don't know why would you specifically want an attribute to be
> *invisible* to reflection. It seems to me that, if there is utility in
> being able to reflect attributes, you should be able to reflect *all* of
> them. You can just ignore the ones that don't matter.
>
> Under my proposal, annotations are constant expressions.  Built-in
attributes are arbitrary token sequences.

An annotation is introduced with a @

An attribute is introduced with a [[

If you want to propose to do it some other way, then you need to specify
how the user defines a new kind of annotation, and consequently which token
sequences are of that annotation kind.  You would also need to show how
these token sequences do not conflict with current and possible future
built-in attributes.

If you want to propose a reflection mechanism that reflects both attributes
and annotations, then you would need a reflection mechanism that can
reflect arbitrary token sequences.  Good luck with 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.
Visit this group at https://groups.google.com/a/isocpp.org/group/std-proposals/.

--001a1144102a15ca34052c0f8a80
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Feb 18, 2016 at 7:13 PM, Nicol Bolas <span dir=3D"ltr">&lt;<a h=
ref=3D"mailto:jmckesson@gmail.com" target=3D"_blank">jmckesson@gmail.com</a=
>&gt;</span> wrote:<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"><div=
><div class=3D"h5"><br><br>On Thursday, February 18, 2016 at 11:49:05 AM UT=
C-5, <a href=3D"mailto:inkwizyt...@gmail.com" target=3D"_blank">inkwizyt...=
@gmail.com</a> wrote:<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"><br>On Wednesday, February 17, 2016 at 2:58:25 PM UTC+1, Sean Middleditc=
h wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8=
ex;border-left:1px #ccc solid;padding-left:1ex"><br>Reflection gets rid of =
much of the above ball of mud. Annotations gets
<br>rid of the rest of it. Not being able to also reflect attributes -
<br>despite them being the same thing as an annotation (&quot;except
<br>arbitrarily different, because&quot;) - just means that we&#39;re back =
to
<br>Jason&#39;s example of:
<br>
<br>=C2=A0 [[deprecated(&quot;lame&quot;)]]
<br>=C2=A0 @deprecated(&quot;still lame, dude&quot;)
<br>=C2=A0 void old_function();
<br>
<br>Such a limitation is just silly to intentionally encode when there&#39;=
s
<br>not yet even the beginnings of a technical reason to do so. Why would
<br>we want to consume @ and an all-new grammatical/parsing burden for
<br>user-annotations when we have the perfectly good [[ ]] syntax already
<br>there? Why would we want to strip the annotations from a declaration
<br>when reflecting when nothing else, and when there&#39;s a use case to h=
ave
<br>at least some of them?
<br>
<br>
<br>--=20
<br>Sean Middleditch
<br><a href=3D"http://seanmiddleditch.com" rel=3D"nofollow" target=3D"_blan=
k">http://seanmiddleditch.com</a></blockquote><div>=C2=A0<br>Maybe mix both=
? Create subset of attributes that will be visible to reflection:<br><br><d=
iv 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><div><span=
 style=3D"color:#660">[[</span><span style=3D"color:#066">@visibleForUser</=
span><span style=3D"color:#660">,</span><span style=3D"color:#000"> canBeIg=
nored</span><span style=3D"color:#660">,</span><span style=3D"color:#000"> =
</span><span style=3D"color:#066">@anotherVisible</span><span style=3D"colo=
r:#660">]]</span><span style=3D"color:#000"><br></span><span style=3D"color=
:#008">class</span><span style=3D"color:#000"> X</span><span style=3D"color=
:#660">{};</span><span style=3D"color:#000"><br><br></span><span style=3D"c=
olor:#800">//or</span><span style=3D"color:#000"><br><br></span><span style=
=3D"color:#660">[[</span><span style=3D"color:#000">user</span><span style=
=3D"color:#660">::</span><span style=3D"color:#000">visbile</span><span sty=
le=3D"color:#660">,</span><span style=3D"color:#000"> gnu</span><span style=
=3D"color:#660">::</span><span style=3D"color:#000">notVisible</span><span =
style=3D"color:#660">]]</span><span style=3D"color:#000"><br></span><span s=
tyle=3D"color:#008">class</span><span style=3D"color:#000"> Y</span><span s=
tyle=3D"color:#660">{};</span><span style=3D"color:#000"><br></span></div><=
/code></div><br><br></div></div></blockquote></div></div><div><br><br>I don=
&#39;t know why would you specifically want an attribute to be <i>invisible=
</i> to reflection. It seems to me that, if there is utility in being able =
to reflect attributes, you should be able to reflect <i>all</i> of them. Yo=
u can just ignore the ones that don&#39;t matter.<br></div></div><div class=
=3D"HOEnZb"><div class=3D"h5">

<p></p></div></div></blockquote></div>Under my proposal, annotations are co=
nstant expressions.=C2=A0 Built-in attributes are arbitrary token sequences=
..</div><div class=3D"gmail_extra"><br></div><div class=3D"gmail_extra">An a=
nnotation is introduced with a @</div><div class=3D"gmail_extra"><br></div>=
<div class=3D"gmail_extra">An attribute is introduced with a [[</div><div c=
lass=3D"gmail_extra"><br></div><div class=3D"gmail_extra">If you want to pr=
opose to do it some other way, then you need to specify how the user define=
s a new kind of annotation, and consequently which token sequences are of t=
hat annotation kind.=C2=A0 You would also need to show how these token sequ=
ences do not conflict with current and possible future built-in attributes.=
</div><div class=3D"gmail_extra"><br></div><div class=3D"gmail_extra">If yo=
u want to propose a reflection mechanism that reflects both attributes and =
annotations, then you would need a reflection mechanism that can reflect ar=
bitrary token sequences.=C2=A0 Good luck with that.</div><div class=3D"gmai=
l_extra"><br></div></div>

<p></p>

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

--001a1144102a15ca34052c0f8a80--

.


Author: Sean Middleditch <sean.middleditch@gmail.com>
Date: Sat, 20 Feb 2016 12:40:36 -0800 (PST)
Raw View
------=_Part_4001_1118215285.1456000836278
Content-Type: multipart/alternative;
 boundary="----=_Part_4002_792700876.1456000836278"

------=_Part_4002_792700876.1456000836278
Content-Type: text/plain; charset=UTF-8

On Thursday, February 18, 2016 at 10:28:58 AM UTC-8, Andrew Tomazos wrote:
>
> If you want to propose a reflection mechanism that reflects both
> attributes and annotations, then you would need a reflection mechanism that
> can reflect arbitrary token sequences.  Good luck with that.
>

Are there any attributes in the wild that could not be parsed as if they
were constant expression values or type constructors?

I've yet to see one myself, assuming you respecify the existing standard
attributes as built-in types within a namespace implicitly in scope of the
attribute declaration (already the topic of another proposal for attribute
namespaces, iirc).

--
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/af917998-058e-4e97-9746-22f2036d8dee%40isocpp.org.

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

<div dir=3D"ltr">On Thursday, February 18, 2016 at 10:28:58 AM UTC-8, Andre=
w Tomazos 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">If you want to propose a reflection mech=
anism that reflects both attributes and annotations, then you would need a =
reflection mechanism that can reflect arbitrary token sequences.=C2=A0 Good=
 luck with that.<br></div></div></div></blockquote><div><br></div><div>Are =
there any attributes in the wild that could not be parsed as if they were c=
onstant expression values or type constructors?</div><div><br></div><div>I&=
#39;ve yet to see one myself, assuming you respecify the existing standard =
attributes as built-in types within a namespace implicitly in scope of the =
attribute declaration (already the topic of another proposal for attribute =
namespaces, iirc).</div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/af917998-058e-4e97-9746-22f2036d8dee%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/af917998-058e-4e97-9746-22f2036d8dee=
%40isocpp.org</a>.<br />

------=_Part_4002_792700876.1456000836278--
------=_Part_4001_1118215285.1456000836278--

.


Author: Thiago Macieira <thiago@macieira.org>
Date: Sat, 20 Feb 2016 21:34:24 -0800
Raw View
On s=C3=A1bado, 20 de fevereiro de 2016 12:40:36 PST Sean Middleditch wrote=
:
> Are there any attributes in the wild that could not be parsed as if they=
=20
> were constant expression values or type constructors?

__attribute__((mode( MODE )))
__attribute__((altivec( MODE )))

That MODE attribute is a specific token that is not a macro, not a type and=
 not=20
a constant expression.

It's not hard to imagine more attributes that would want to take type names=
=20
instead of variables and constants, like alignas does.

--=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/2950402.udNkCYPs6c%40tjmaciei-mobl4.

.


Author: Cleiton Santoia <cleitonsantoia@gmail.com>
Date: Sun, 21 Feb 2016 12:21:00 -0800 (PST)
Raw View
------=_Part_18_1190176938.1456086060830
Content-Type: multipart/alternative;
 boundary="----=_Part_19_1777910804.1456086060831"

------=_Part_19_1777910804.1456086060831
Content-Type: text/plain; charset=UTF-8


>
> An annotation is introduced with a @
>

> An attribute is introduced with a [[
>

That was not the intention of attributes...
In this <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf> (n2761)
paper the authors say in first line "The idea is to be able to
* ***annotate*** *some entities in C++ with additional information."


If you want to propose a reflection mechanism that reflects both attributes
> and annotations, then you would need a reflection mechanism that can
> reflect arbitrary token sequences.  Good luck with that.
>

Well I did p0255r0
<http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0255r0.pdf>,actually
I'm following N2761 way ot thinking, and not separating annotation from
attributes, the are the same...
I proposed to make all attributes typed, but another option is just reflect
those "not typed" attributes as const char*,  what you think ?

--
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/80f522d9-e41f-4195-aad8-d339ca5117e4%40isocpp.org.

------=_Part_19_1777910804.1456086060831
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>An annotation is introduced with a @</div></div></blockquote><bloc=
kquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-l=
eft: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><div><br></div><di=
v>An attribute is introduced with a [[</div></div></blockquote><div>=C2=A0<=
/div><div>That was not the intention of attributes...</div><div>In=C2=A0<a =
href=3D"http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf" =
target=3D"_blank" rel=3D"nofollow" style=3D"cursor: pointer;">this</a>=C2=
=A0(n2761) paper the authors say in first line &quot;The idea is to be able=
 to<b>=C2=A0***annotate***=C2=A0</b>some entities in C++ with additional in=
formation.&quot;=C2=A0<br></div><div>=C2=A0</div><div><br></div><blockquote=
 class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1=
px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr"><div>If you want to prop=
ose a reflection mechanism that reflects both attributes and annotations, t=
hen you would need a reflection mechanism that can reflect arbitrary token =
sequences.=C2=A0 Good luck with that.<br></div></div></blockquote><div><br>=
</div><div>Well I did <a href=3D"http://open-std.org/JTC1/SC22/WG21/docs/pa=
pers/2016/p0255r0.pdf">p0255r0</a>,actually I&#39;m following N2761 way ot =
thinking, and not separating annotation from attributes, the are the same..=
..</div><div>I proposed to make all attributes typed, but another option is =
just reflect those &quot;not typed&quot; attributes as const char*, =C2=A0w=
hat you think ?</div><div><br></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/80f522d9-e41f-4195-aad8-d339ca5117e4%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/80f522d9-e41f-4195-aad8-d339ca5117e4=
%40isocpp.org</a>.<br />

------=_Part_19_1777910804.1456086060831--
------=_Part_18_1190176938.1456086060830--

.


Author: Sean Middleditch <sean.middleditch@gmail.com>
Date: Sun, 21 Feb 2016 12:37:52 -0800 (PST)
Raw View
------=_Part_4802_1853205773.1456087072278
Content-Type: multipart/alternative;
 boundary="----=_Part_4803_501403422.1456087072283"

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

On Saturday, February 20, 2016 at 9:34:30 PM UTC-8, Thiago Macieira wrote:
>
> On s=C3=A1bado, 20 de fevereiro de 2016 12:40:36 PST Sean Middleditch wro=
te:=20
> > Are there any attributes in the wild that could not be parsed as if the=
y=20
> > were constant expression values or type constructors?=20
>
> __attribute__((mode( MODE )))=20
> __attribute__((altivec( MODE )))=20
>
> That MODE attribute is a specific token that is not a macro, not a type=
=20
> and not=20
> a constant expression.=20
>

Well... damn. OK. :/

I'm still not 100% convinced we absolutely can't use the existing syntax=20
for annotations, but independent of syntax, a potential compromise that=20
satisfies the overall concerns would be for attributes add an implicit=20
standard annotation, e.g. if

[[deprecated("whoops")]]
void adaisy();


implied

[[deprecated("whoops")]]
/*implicitly added by compiler*/@std::annotations::deprecated("whoops")
void adaisy();

=20
The only problem I see is that then users could add the annotation and=20
expect the attribute (e.g. expect the implicit markup to be commutative). I=
=20
suppose an implementation could relatively easily offer a warning if it=20
detects well-known annotations on a declaration that lack the corresponding=
=20
attribute?


> It's not hard to imagine more attributes that would want to take type=20
> names=20
> instead of variables and constants, like alignas does.=20
>
> --=20
> Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org=20
>    Software Architect - Intel Open Source Technology Center=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/e50e337c-36b9-4c7f-837b-09612420d719%40isocpp.or=
g.

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

<div dir=3D"ltr">On Saturday, February 20, 2016 at 9:34:30 PM UTC-8, Thiago=
 Macieira wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin=
-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On s=C3=A1bado=
, 20 de fevereiro de 2016 12:40:36 PST Sean Middleditch wrote:
<br>&gt; Are there any attributes in the wild that could not be parsed as i=
f they=20
<br>&gt; were constant expression values or type constructors?
<br>
<br>__attribute__((mode( MODE )))
<br>__attribute__((altivec( MODE )))
<br>
<br>That MODE attribute is a specific token that is not a macro, not a type=
 and not=20
<br>a constant expression.
<br></blockquote><div><br></div><div>Well... damn. OK. :/</div><div><br></d=
iv><div>I&#39;m still not 100% convinced we absolutely can&#39;t use the ex=
isting syntax for annotations, but independent of syntax, a potential compr=
omise that satisfies the overall concerns would be for attributes add an im=
plicit standard annotation, e.g. if</div><div><br></div><blockquote style=
=3D"margin: 0 0 0 40px; border: none; padding: 0px;"><div>[[deprecated(&quo=
t;whoops&quot;)]]</div><div>void adaisy();</div></blockquote><div><br></div=
><div>implied</div><div><br></div><blockquote style=3D"margin: 0 0 0 40px; =
border: none; padding: 0px;"><div>[[deprecated(&quot;whoops&quot;)]]</div>/=
*implicitly added by compiler*/@std::annotations::deprecated(&quot;whoops&q=
uot;)<div>void=C2=A0adaisy();</div></blockquote><div>=C2=A0</div><div>The o=
nly problem I see is that then users could add the annotation and expect th=
e attribute (e.g. expect the implicit markup to be commutative). I suppose =
an implementation could relatively easily offer a warning if it detects wel=
l-known annotations on a declaration that lack the corresponding attribute?=
</div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin: 0;m=
argin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">
<br>It&#39;s not hard to imagine more attributes that would want to take ty=
pe names=20
<br>instead of variables and constants, like alignas does.
<br>
<br>--=20
<br>Thiago Macieira - thiago (AT) <a href=3D"http://macieira.info" target=
=3D"_blank" rel=3D"nofollow" onmousedown=3D"this.href=3D&#39;http://www.goo=
gle.com/url?q\75http%3A%2F%2Fmacieira.info\46sa\75D\46sntz\0751\46usg\75AFQ=
jCNEswDUBNCNanbu7euhqLn_62FW8ag&#39;;return true;" onclick=3D"this.href=3D&=
#39;http://www.google.com/url?q\75http%3A%2F%2Fmacieira.info\46sa\75D\46snt=
z\0751\46usg\75AFQjCNEswDUBNCNanbu7euhqLn_62FW8ag&#39;;return true;">maciei=
ra.info</a> - thiago (AT) <a href=3D"http://kde.org" target=3D"_blank" rel=
=3D"nofollow" onmousedown=3D"this.href=3D&#39;http://www.google.com/url?q\7=
5http%3A%2F%2Fkde.org\46sa\75D\46sntz\0751\46usg\75AFQjCNHGRJdo5_JYG1Dowztw=
AHAKs80XSA&#39;;return true;" onclick=3D"this.href=3D&#39;http://www.google=
..com/url?q\75http%3A%2F%2Fkde.org\46sa\75D\46sntz\0751\46usg\75AFQjCNHGRJdo=
5_JYG1DowztwAHAKs80XSA&#39;;return true;">kde.org</a>
<br>=C2=A0 =C2=A0Software Architect - Intel Open Source Technology Center
<br>
<br></blockquote></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/e50e337c-36b9-4c7f-837b-09612420d719%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/e50e337c-36b9-4c7f-837b-09612420d719=
%40isocpp.org</a>.<br />

------=_Part_4803_501403422.1456087072283--
------=_Part_4802_1853205773.1456087072278--

.


Author: Thiago Macieira <thiago@macieira.org>
Date: Sun, 21 Feb 2016 12:52:34 -0800
Raw View
On domingo, 21 de fevereiro de 2016 12:37:52 PST Sean Middleditch wrote:
> On Saturday, February 20, 2016 at 9:34:30 PM UTC-8, Thiago Macieira wrote=
:
> > On s=C3=A1bado, 20 de fevereiro de 2016 12:40:36 PST Sean Middleditch w=
rote:
> > > Are there any attributes in the wild that could not be parsed as if t=
hey
> > > were constant expression values or type constructors?
> >=20
> > __attribute__((mode( MODE )))
> > __attribute__((altivec( MODE )))
> >=20
> > That MODE attribute is a specific token that is not a macro, not a type
> > and not
> > a constant expression.
>=20
> Well... damn. OK. :/

Well, we don't have to support all attributes with random stuff in them in=
=20
reflection. Only those with constant expressions in the parameters, referri=
ng=20
to existing, declared classes, would be reflected.

--=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/38321072.YfTWAbFUMR%40tjmaciei-mobl4.

.


Author: Sean Middleditch <sean@middleditch.us>
Date: Sun, 21 Feb 2016 14:33:59 -0800
Raw View
On Sun, Feb 21, 2016 at 12:52 PM, Thiago Macieira <thiago@macieira.org> wro=
te:
> On domingo, 21 de fevereiro de 2016 12:37:52 PST Sean Middleditch wrote:
>> On Saturday, February 20, 2016 at 9:34:30 PM UTC-8, Thiago Macieira wrot=
e:
>> > On s=C3=A1bado, 20 de fevereiro de 2016 12:40:36 PST Sean Middleditch =
wrote:
>> > > Are there any attributes in the wild that could not be parsed as if =
they
>> > > were constant expression values or type constructors?
>> >
>> > __attribute__((mode( MODE )))
>> > __attribute__((altivec( MODE )))
>> >
>> > That MODE attribute is a specific token that is not a macro, not a typ=
e
>> > and not
>> > a constant expression.
>>
>> Well... damn. OK. :/
>
> Well, we don't have to support all attributes with random stuff in them i=
n
> reflection. Only those with constant expressions in the parameters, refer=
ring
> to existing, declared classes, would be reflected.

Said restriction gets us back to having to specify what those
existing, declared classes would be for standard attributes that
should be exposed to reflection. Or an implicit mapping such that the
existing attributes try to do name lookup in a well-known namespace.

>
> --
> 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 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/kHboBaYTj0A/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/38321072.YfTWAbFUMR%40tjmaciei-mobl4.



--=20
Sean Middleditch
http://seanmiddleditch.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/CALQmNFiGExSKWabhJK1CEZ_XWq0GXnyRRKNN6CJW1O0NHKM=
eqA%40mail.gmail.com.

.