Topic: Perfect Forwarding References
Author: =?UTF-8?Q?Jos=C3=A9_Rodrigo?= <rodrigojose690@gmail.com>
Date: Sun, 14 Jan 2018 14:17:16 -0800 (PST)
Raw View
------=_Part_3508_486376320.1515968236615
Content-Type: text/plain; charset="UTF-8"
--
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/fe29487e-3631-4c8f-9ab3-bf6191591fa0%40isocpp.org.
------=_Part_3508_486376320.1515968236615
Content-Type: text/html; charset=UTF-8; name=references.html
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=references.html
X-Attachment-Id: 19133589-5e79-4ebb-951d-f0a4e3c9ff5a
Content-ID: <19133589-5e79-4ebb-951d-f0a4e3c9ff5a>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3DUTF-8" =
/>
<title>references.html</title>
<meta name=3D"generator" content=3D"Haroopad 0.13.1" />
<meta name=3D"viewport" content=3D"width=3Ddevice-width, initial-scale=3D=
1.0">
<style>div.oembedall-githubrepos{border:1px solid #DDD;border-radius:4px;=
list-style-type:none;margin:0 0 10px;padding:8px 10px 0;font:13.34px/1.4 he=
lvetica,arial,freesans,clean,sans-serif;width:452px;background-color:#fff}d=
iv.oembedall-githubrepos .oembedall-body{background:-moz-linear-gradient(ce=
nter top,#FAFAFA,#EFEFEF);background:-webkit-gradient(linear,left top,left =
bottom,from(#FAFAFA),to(#EFEFEF));border-bottom-left-radius:4px;border-bott=
om-right-radius:4px;border-top:1px solid #EEE;margin-left:-10px;margin-top:=
8px;padding:5px 10px;width:100%}div.oembedall-githubrepos h3{font-size:14px=
;margin:0;padding-left:18px;white-space:nowrap}div.oembedall-githubrepos p.=
oembedall-description{color:#444;font-size:12px;margin:0 0 3px}div.oembedal=
l-githubrepos p.oembedall-updated-at{color:#888;font-size:11px;margin:0}div=
..oembedall-githubrepos ul.oembedall-repo-stats{border:none;float:right;font=
-size:11px;font-weight:700;padding-left:15px;position:relative;z-index:5;ma=
rgin:0}div.oembedall-githubrepos ul.oembedall-repo-stats li{border:none;col=
or:#666;display:inline-block;list-style-type:none;margin:0!important}div.oe=
mbedall-githubrepos ul.oembedall-repo-stats li a{background-color:transpare=
nt;border:none;color:#666!important;background-position:5px -2px;background=
-repeat:no-repeat;border-left:1px solid #DDD;display:inline-block;height:21=
px;line-height:21px;padding:0 5px 0 23px}div.oembedall-githubrepos ul.oembe=
dall-repo-stats li:first-child a{border-left:medium none;margin-right:-3px}=
div.oembedall-githubrepos ul.oembedall-repo-stats li a:hover{background:5px=
-27px no-repeat #4183C4;color:#FFF!important;text-decoration:none}div.oemb=
edall-githubrepos ul.oembedall-repo-stats li:first-child a:hover{border-bot=
tom-left-radius:3px;border-top-left-radius:3px}ul.oembedall-repo-stats li:l=
ast-child a:hover{border-bottom-right-radius:3px;border-top-right-radius:3p=
x}span.oembedall-closehide{background-color:#aaa;border-radius:2px;cursor:p=
ointer;margin-right:3px}div.oembedall-container{margin-top:5px;text-align:l=
eft}.oembedall-ljuser{font-weight:700}.oembedall-ljuser img{vertical-align:=
bottom;border:0;padding-right:1px}.oembedall-stoqembed{border-bottom:1px do=
tted #999;float:left;overflow:hidden;width:730px;line-height:1;background:#=
FFF;color:#000;font-family:Arial,Liberation Sans,DejaVu Sans,sans-serif;fon=
t-size:80%;text-align:left;margin:0;padding:0}.oembedall-stoqembed a{color:=
#07C;text-decoration:none;margin:0;padding:0}.oembedall-stoqembed a:hover{t=
ext-decoration:underline}.oembedall-stoqembed a:visited{color:#4A6B82}.oemb=
edall-stoqembed h3{font-family:Trebuchet MS,Liberation Sans,DejaVu Sans,san=
s-serif;font-size:130%;font-weight:700;margin:0;padding:0}.oembedall-stoqem=
bed .oembedall-reputation-score{color:#444;font-size:120%;font-weight:700;m=
argin-right:2px}.oembedall-stoqembed .oembedall-user-info{height:35px;width=
:185px}.oembedall-stoqembed .oembedall-user-info .oembedall-user-gravatar32=
{float:left;height:32px;width:32px}.oembedall-stoqembed .oembedall-user-inf=
o .oembedall-user-details{float:left;margin-left:5px;overflow:hidden;white-=
space:nowrap;width:145px}.oembedall-stoqembed .oembedall-question-hyperlink=
{font-weight:700}.oembedall-stoqembed .oembedall-stats{background:#EEE;marg=
in:0 0 0 7px;padding:4px 7px 6px;width:58px}.oembedall-stoqembed .oembedall=
-statscontainer{float:left;margin-right:8px;width:86px}.oembedall-stoqembed=
.oembedall-votes{color:#555;padding:0 0 7px;text-align:center}.oembedall-s=
toqembed .oembedall-vote-count-post{font-size:240%;color:#808185;display:bl=
ock;font-weight:700}.oembedall-stoqembed .oembedall-views{color:#999;paddin=
g-top:4px;text-align:center}.oembedall-stoqembed .oembedall-status{margin-t=
op:-3px;padding:4px 0;text-align:center;background:#75845C;color:#FFF}.oemb=
edall-stoqembed .oembedall-status strong{color:#FFF;display:block;font-size=
:140%}.oembedall-stoqembed .oembedall-summary{float:left;width:635px}.oembe=
dall-stoqembed .oembedall-excerpt{line-height:1.2;margin:0;padding:0 0 5px}=
..oembedall-stoqembed .oembedall-tags{float:left;line-height:18px}.oembedall=
-stoqembed .oembedall-tags a:hover{text-decoration:none}.oembedall-stoqembe=
d .oembedall-post-tag{background-color:#E0EAF1;border-bottom:1px solid #3E6=
D8E;border-right:1px solid #7F9FB6;color:#3E6D8E;font-size:90%;line-height:=
2.4;margin:2px 2px 2px 0;padding:3px 4px;text-decoration:none;white-space:n=
owrap}.oembedall-stoqembed .oembedall-post-tag:hover{background-color:#3E6D=
8E;border-bottom:1px solid #37607D;border-right:1px solid #37607D;color:#E0=
EAF1}.oembedall-stoqembed .oembedall-fr{float:right}.oembedall-stoqembed .o=
embedall-statsarrow{background-image:url(http://cdn.sstatic.net/stackoverfl=
ow/img/sprites.png?v=3D3);background-repeat:no-repeat;overflow:hidden;backg=
round-position:0 -435px;float:right;height:13px;margin-top:12px;width:7px}.=
oembedall-facebook1{border:1px solid #1A3C6C;padding:0;font:13.34px/1.4 ver=
dana;width:500px}.oembedall-facebook2{background-color:#627add}.oembedall-f=
acebook2 a{color:#e8e8e8;text-decoration:none}.oembedall-facebookBody{backg=
round-color:#fff;vertical-align:top;padding:5px}.oembedall-facebookBody .co=
ntents{display:inline-block;width:100%}.oembedall-facebookBody div img{floa=
t:left;margin-right:5px}div.oembedall-lanyard{-webkit-box-shadow:none;-webk=
it-transition-delay:0s;-webkit-transition-duration:.4000000059604645s;-webk=
it-transition-property:width;-webkit-transition-timing-function:cubic-bezie=
r(0.42,0,.58,1);background-attachment:scroll;background-clip:border-box;bac=
kground-color:transparent;background-image:none;background-origin:padding-b=
ox;border-width:0;box-shadow:none;color:#112644;display:block;float:left;fo=
nt-family:'Trebuchet MS',Trebuchet,sans-serif;font-size:16px;height:253px;l=
ine-height:19px;margin:0;max-width:none;min-height:0;outline:#112644 0;over=
flow-x:visible;overflow-y:visible;padding:0;position:relative;text-align:le=
ft;vertical-align:baseline;width:804px}div.oembedall-lanyard .tagline{font-=
size:1.5em}div.oembedall-lanyard .wrapper{overflow:hidden;clear:both}div.oe=
mbedall-lanyard .split{float:left;display:inline}div.oembedall-lanyard .pro=
minent-place .flag:active,div.oembedall-lanyard .prominent-place .flag:focu=
s,div.oembedall-lanyard .prominent-place .flag:hover,div.oembedall-lanyard =
..prominent-place .flag:link,div.oembedall-lanyard .prominent-place .flag:vi=
sited{float:left;display:block;width:48px;height:48px;position:relative;top=
:-5px;margin-right:10px}div.oembedall-lanyard .place-context{font-size:.889=
em}div.oembedall-lanyard .prominent-place .sub-place{display:block}div.oemb=
edall-lanyard .prominent-place{font-size:1.125em;line-height:1.1em;font-wei=
ght:400}div.oembedall-lanyard .main-date{color:#8CB4E0;font-weight:700;line=
-height:1.1}div.oembedall-lanyard .first{width:48.57%;margin:0 0 0 2.857%}.=
mermaid .label{color:#333}.node circle,.node polygon,.node rect{fill:#cde49=
8;stroke:#13540c;stroke-width:1px}.edgePath .path{stroke:green;stroke-width=
:1.5px}.cluster rect{fill:#cdffb2;rx:40;stroke:#6eaa49;stroke-width:1px}.cl=
uster text{fill:#333}.actor{stroke:#13540c;fill:#cde498}text.actor{fill:#00=
0;stroke:none}.actor-line{stroke:grey}.messageLine0{stroke-width:1.5;stroke=
-dasharray:"2 2";marker-end:"url(#arrowhead)";stroke:#333}.messageLine1{str=
oke-width:1.5;stroke-dasharray:"2 2";stroke:#333}#arrowhead{fill:#333}#cros=
shead path{fill:#333!important;stroke:#333!important}.messageText{fill:#333=
;stroke:none}.labelBox{stroke:#326932;fill:#cde498}.labelText,.loopText{fil=
l:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:"2 2";marker-e=
nd:"url(#arrowhead)";stroke:#326932}.note{stroke:#6eaa49;fill:#fff5ad}.note=
Text{fill:#000;stroke:none;font-family:'trebuchet ms',verdana,arial;font-si=
ze:14px}.section{stroke:none;opacity:.2}.section0,.section2{fill:#6eaa49}.s=
ection1,.section3{fill:#fff;opacity:.2}.sectionTitle0,.sectionTitle1,.secti=
onTitle2,.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size=
:11px;text-height:14px}.grid .tick{stroke:lightgrey;opacity:.3;shape-render=
ing:crispEdges}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke=
-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-size:11px=
}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px}.taskText=
OutsideLeft{fill:#000;text-anchor:end;font-size:11px}.taskText0,.taskText1,=
..taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#487e3a;st=
roke:#13540c}.taskTextOutside0,.taskTextOutside1,.taskTextOutside2,.taskTex=
tOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#cde498;stroke=
:#13540c}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000!impo=
rtant}.done0,.done1,.done2,.done3{stroke:grey;fill:lightgrey;stroke-width:2=
}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000!important}.crit0,.cr=
it1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeC=
rit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#cde498;stroke-width:2}.don=
eCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:lightgrey;stroke-w=
idth:2;cursor:pointer;shape-rendering:crispEdges}.activeCritText0,.activeCr=
itText1,.activeCritText2,.activeCritText3,.doneCritText0,.doneCritText1,.do=
neCritText2,.doneCritText3{fill:#000!important}.titleText{text-anchor:middl=
e;font-size:18px;fill:#000}text{font-family:'trebuchet ms',verdana,arial;fo=
nt-size:14px}html{height:100%}body{margin:0!important;padding:5px 20px 26px=
!important;background-color:#fff;font-family:"Lucida Grande","Segoe UI","Ap=
ple SD Gothic Neo","Malgun Gothic","Lucida Sans Unicode",Helvetica,Arial,sa=
ns-serif;font-size:.9em;overflow-x:hidden;overflow-y:auto}br,h1,h2,h3,h4,h5=
,h6{clear:both}hr.page{background:url(data:image/png;base64,iVBORw0KGgoAAAA=
NSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5cc=
llPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZ=
D0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6=
bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjA=
xMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3=
d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZ=
GY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxu=
czp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh=
0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG=
9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9I=
nhtcC5paWQ6OENDRjNBN0E2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiIHhtcE1NOkRvY3VtZW50=
SUQ9InhtcC5kaWQ6OENDRjNBN0I2NTZBMTFFMEI3QjRBODM4NzJDMjlGNDgiPiA8eG1wTU06RGV=
yaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4Q0NGM0E3ODY1NkExMUUwQjdCNE=
E4Mzg3MkMyOUY0OCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4Q0NGM0E3OTY1NkExMUUwQ=
jdCNEE4Mzg3MkMyOUY0OCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w=
bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PqqezsUAAAAfSURBVHjaYmRABcYwBiM2QSA4y4hNEKY=
DQxAEAAIMAHNGAzhkPOlYAAAAAElFTkSuQmCC) repeat-x;border:0;height:3px;padding=
:0}hr.underscore{border-top-style:dashed!important}body >:first-child{margi=
n-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border-rad=
ius:3px}iframe{border:0}figure{-webkit-margin-before:0;-webkit-margin-after=
:0;-webkit-margin-start:0;-webkit-margin-end:0}kbd{border:1px solid #aaa;-m=
oz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-s=
hadow:1px 2px 2px #ddd;-webkit-box-shadow:1px 2px 2px #ddd;box-shadow:1px 2=
px 2px #ddd;background-color:#f9f9f9;background-image:-moz-linear-gradient(=
top,#eee,#f9f9f9,#eee);background-image:-o-linear-gradient(top,#eee,#f9f9f9=
,#eee);background-image:-webkit-linear-gradient(top,#eee,#f9f9f9,#eee);back=
ground-image:linear-gradient(top,#eee,#f9f9f9,#eee);padding:1px 3px;font-fa=
mily:inherit;font-size:.85em}.oembeded .oembed_photo{display:inline-block}i=
mg[data-echo]{margin:25px 0;width:100px;height:100px;background:url(../img/=
ajax.gif) center center no-repeat #fff}.spinner{display:inline-block;width:=
10px;height:10px;margin-bottom:-.1em;border:2px solid rgba(0,0,0,.5);border=
-top-color:transparent;border-radius:100%;-webkit-animation:spin 1s infinit=
e linear;animation:spin 1s infinite linear}.spinner:after{content:'';displa=
y:block;width:0;height:0;position:absolute;top:-6px;left:0;border:4px solid=
transparent;border-bottom-color:rgba(0,0,0,.5);-webkit-transform:rotate(45=
deg);transform:rotate(45deg)}@-webkit-keyframes spin{to{-webkit-transform:r=
otate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}p.toc{margin:0!=
important}p.toc ul{padding-left:10px}p.toc>ul{padding:10px;margin:0 10px;di=
splay:inline-block;border:1px solid #ededed;border-radius:5px}p.toc li,p.to=
c ul{list-style-type:none}p.toc li{width:100%;padding:0;overflow:hidden}p.t=
oc li a::after{content:"."}p.toc li a:before{content:"=E2=80=A2 "}p.toc h5{=
text-transform:uppercase}p.toc .title{float:left;padding-right:3px}p.toc .n=
umber{margin:0;float:right;padding-left:3px;background:#fff;display:none}in=
put.task-list-item{margin-left:-1.62em}.markdown{font-family:"Hiragino Sans=
GB","Microsoft YaHei",STHeiti,SimSun,"Lucida Grande","Lucida Sans Unicode"=
,"Lucida Sans",'Segoe UI',AppleSDGothicNeo-Medium,'Malgun Gothic',Verdana,T=
ahoma,sans-serif;padding:20px}.markdown a{text-decoration:none;vertical-ali=
gn:baseline}.markdown a:hover{text-decoration:underline}.markdown h1{font-s=
ize:2.2em;font-weight:700;margin:1.5em 0 1em}.markdown h2{font-size:1.8em;f=
ont-weight:700;margin:1.275em 0 .85em}.markdown h3{font-size:1.6em;font-wei=
ght:700;margin:1.125em 0 .75em}.markdown h4{font-size:1.4em;font-weight:700=
;margin:.99em 0 .66em}.markdown h5{font-size:1.2em;font-weight:700;margin:.=
855em 0 .57em}.markdown h6{font-size:1em;font-weight:700;margin:.75em 0 .5e=
m}.markdown h1+p,.markdown h1:first-child,.markdown h2+p,.markdown h2:first=
-child,.markdown h3+p,.markdown h3:first-child,.markdown h4+p,.markdown h4:=
first-child,.markdown h5+p,.markdown h5:first-child,.markdown h6+p,.markdow=
n h6:first-child{margin-top:0}.markdown hr{border:1px solid #ccc}.markdown =
p{margin:1em 0;word-wrap:break-word}.markdown ol{list-style-type:decimal}.m=
arkdown li{display:list-item;line-height:1.4em}.markdown blockquote{margin:=
1em 20px}.markdown blockquote>:first-child{margin-top:0}.markdown blockquot=
e>:last-child{margin-bottom:0}.markdown blockquote cite:before{content:'\20=
14 \00A0'}.markdown .code{border-radius:3px;word-wrap:break-word}.markdown =
pre{border-radius:3px;word-wrap:break-word;border:1px solid #ccc;overflow:a=
uto;padding:.5em}.markdown pre code{border:0;display:block}.markdown pre>co=
de{font-family:Consolas,Inconsolata,Courier,monospace;font-weight:700;white=
-space:pre;margin:0}.markdown code{border-radius:3px;word-wrap:break-word;b=
order:1px solid #ccc;padding:0 5px;margin:0 2px}.markdown img{max-width:100=
%}.markdown mark{color:#000;background-color:#fcf8e3}.markdown table{paddin=
g:0;border-collapse:collapse;border-spacing:0;margin-bottom:16px}.markdown =
table tr td,.markdown table tr th{border:1px solid #ccc;margin:0;padding:6p=
x 13px}.markdown table tr th{font-weight:700}.markdown table tr th>:first-c=
hild{margin-top:0}.markdown table tr th>:last-child{margin-bottom:0}.markdo=
wn table tr td>:first-child{margin-top:0}.markdown table tr td>:last-child{=
margin-bottom:0}.github{padding:20px;font-family:"Helvetica Neue",Helvetica=
,"Hiragino Sans GB","Microsoft YaHei",STHeiti,SimSun,"Segoe UI",AppleSDGoth=
icNeo-Medium,'Malgun Gothic',Arial,freesans,sans-serif;font-size:15px;backg=
round:#fff;line-height:1.6;-webkit-font-smoothing:antialiased}.github a{col=
or:#3269a0}.github a:hover{color:#4183c4}.github h2{border-bottom:1px solid=
#e6e6e6;line-height:1.6}.github h6{color:#777}.github hr{border:1px solid =
#e6e6e6}.github pre>code{font-size:.9em;font-family:Consolas,Inconsolata,Co=
urier,monospace}.github blockquote>code,.github h1>code,.github h2>code,.gi=
thub h3>code,.github h4>code,.github h5>code,.github h6>code,.github li>cod=
e,.github p>code,.github td>code{background-color:rgba(0,0,0,.07);font-fami=
ly:Consolas,"Liberation Mono",Menlo,Courier,monospace;font-size:85%;padding=
:.2em .5em;border:0}.github blockquote{border-left:4px solid #e6e6e6;paddin=
g:0 15px;font-style:italic}.github table{background-color:#fafafa}.github t=
able tr td,.github table tr th{border:1px solid #e6e6e6}.github table tr:nt=
h-child(2n){background-color:#f2f2f2}.hljs{display:block;overflow-x:auto;pa=
dding:.5em;background:#fdf6e3;color:#657b83;-webkit-text-size-adjust:none}.=
diff .hljs-header,.hljs-comment,.hljs-doctype,.hljs-javadoc,.hljs-pi,.lisp =
..hljs-string{color:#93a1a1}.css .hljs-tag,.hljs-addition,.hljs-keyword,.hlj=
s-request,.hljs-status,.hljs-winutils,.method,.nginx .hljs-title{color:#859=
900}.hljs-command,.hljs-dartdoc,.hljs-hexcolor,.hljs-link_url,.hljs-number,=
..hljs-phpdoc,.hljs-regexp,.hljs-rules .hljs-value,.hljs-string,.hljs-tag .h=
ljs-value,.tex .hljs-formula{color:#2aa198}.css .hljs-function,.hljs-built_=
in,.hljs-chunk,.hljs-decorator,.hljs-id,.hljs-identifier,.hljs-localvars,.h=
ljs-title,.vhdl .hljs-literal{color:#268bd2}.hljs-attribute,.hljs-class .hl=
js-title,.hljs-constant,.hljs-link_reference,.hljs-parent,.hljs-type,.hljs-=
variable,.lisp .hljs-body,.smalltalk .hljs-number{color:#b58900}.css .hljs-=
pseudo,.diff .hljs-change,.hljs-attr_selector,.hljs-cdata,.hljs-header,.hlj=
s-pragma,.hljs-preprocessor,.hljs-preprocessor .hljs-keyword,.hljs-shebang,=
..hljs-special,.hljs-subst,.hljs-symbol,.hljs-symbol .hljs-string{color:#cb4=
b16}.hljs-deletion,.hljs-important{color:#dc322f}.hljs-link_label{color:#6c=
71c4}.tex .hljs-formula{background:#eee8d5}.MathJax_Hover_Frame{border-radi=
us:.25em;-webkit-border-radius:.25em;-moz-border-radius:.25em;-khtml-border=
-radius:.25em;box-shadow:0 0 15px #83A;-webkit-box-shadow:0 0 15px #83A;-mo=
z-box-shadow:0 0 15px #83A;-khtml-box-shadow:0 0 15px #83A;border:1px solid=
#A6D!important;display:inline-block;position:absolute}.MathJax_Hover_Arrow=
{position:absolute;width:15px;height:11px;cursor:pointer}#MathJax_About{pos=
ition:fixed;left:50%;width:auto;text-align:center;border:3px outset;padding=
:1em 2em;background-color:#DDD;color:#000;cursor:default;font-family:messag=
e-box;font-size:120%;font-style:normal;text-indent:0;text-transform:none;li=
ne-height:normal;letter-spacing:normal;word-spacing:normal;word-wrap:normal=
;white-space:nowrap;float:none;z-index:201;border-radius:15px;-webkit-borde=
r-radius:15px;-moz-border-radius:15px;-khtml-border-radius:15px;box-shadow:=
0 10px 20px gray;-webkit-box-shadow:0 10px 20px gray;-moz-box-shadow:0 10px=
20px gray;-khtml-box-shadow:0 10px 20px gray;filter:progid:DXImageTransfor=
m.Microsoft.dropshadow(OffX=3D2, OffY=3D2, Color=3D'gray', Positive=3D'true=
')}.MathJax_Menu{position:absolute;background-color:#fff;color:#000;width:a=
uto;padding:2px;border:1px solid #CCC;margin:0;cursor:default;font:menu;tex=
t-align:left;text-indent:0;text-transform:none;line-height:normal;letter-sp=
acing:normal;word-spacing:normal;word-wrap:normal;white-space:nowrap;float:=
none;z-index:201;box-shadow:0 10px 20px gray;-webkit-box-shadow:0 10px 20px=
gray;-moz-box-shadow:0 10px 20px gray;-khtml-box-shadow:0 10px 20px gray;f=
ilter:progid:DXImageTransform.Microsoft.dropshadow(OffX=3D2, OffY=3D2, Colo=
r=3D'gray', Positive=3D'true')}.MathJax_MenuItem{padding:2px 2em;background=
:0 0}.MathJax_MenuArrow{position:absolute;right:.5em;color:#666}.MathJax_Me=
nuActive .MathJax_MenuArrow{color:#fff}.MathJax_MenuArrow.RTL{left:.5em;rig=
ht:auto}.MathJax_MenuCheck{position:absolute;left:.7em}.MathJax_MenuCheck.R=
TL{right:.7em;left:auto}.MathJax_MenuRadioCheck{position:absolute;left:1em}=
..MathJax_MenuRadioCheck.RTL{right:1em;left:auto}.MathJax_MenuLabel{padding:=
2px 2em 4px 1.33em;font-style:italic}.MathJax_MenuRule{border-top:1px solid=
#CCC;margin:4px 1px 0}.MathJax_MenuDisabled{color:GrayText}.MathJax_MenuAc=
tive{background-color:Highlight;color:HighlightText}.MathJax_Menu_Close{pos=
ition:absolute;width:31px;height:31px;top:-15px;left:-15px}#MathJax_Zoom{po=
sition:absolute;background-color:#F0F0F0;overflow:auto;display:block;z-inde=
x:301;padding:.5em;border:1px solid #000;margin:0;font-weight:400;font-styl=
e:normal;text-align:left;text-indent:0;text-transform:none;line-height:norm=
al;letter-spacing:normal;word-spacing:normal;word-wrap:normal;white-space:n=
owrap;float:none;box-shadow:5px 5px 15px #AAA;-webkit-box-shadow:5px 5px 15=
px #AAA;-moz-box-shadow:5px 5px 15px #AAA;-khtml-box-shadow:5px 5px 15px #A=
AA;filter:progid:DXImageTransform.Microsoft.dropshadow(OffX=3D2, OffY=3D2, =
Color=3D'gray', Positive=3D'true')}#MathJax_ZoomOverlay{position:absolute;l=
eft:0;top:0;z-index:300;display:inline-block;width:100%;height:100%;border:=
0;padding:0;margin:0;background-color:#fff;opacity:0;filter:alpha(opacity=
=3D0)}#MathJax_ZoomFrame{position:relative;display:inline-block;height:0;wi=
dth:0}#MathJax_ZoomEventTrap{position:absolute;left:0;top:0;z-index:302;dis=
play:inline-block;border:0;padding:0;margin:0;background-color:#fff;opacity=
:0;filter:alpha(opacity=3D0)}.MathJax_Preview{color:#888}#MathJax_Message{p=
osition:fixed;left:1px;bottom:2px;background-color:#E6E6E6;border:1px solid=
#959595;margin:0;padding:2px 8px;z-index:102;color:#000;font-size:80%;widt=
h:auto;white-space:nowrap}#MathJax_MSIE_Frame{position:absolute;top:0;left:=
0;width:0;z-index:101;border:0;margin:0;padding:0}.MathJax_Error{color:#C00=
;font-style:italic}footer{position:fixed;font-size:.8em;text-align:right;bo=
ttom:0;margin-left:-25px;height:20px;width:100%}</style>
</head>
<body class=3D"markdown github">
<h1 id=3D"re-thinking-references:-*fwd*,-*ref*-and-*ptr*-references."><a na=
me=3D"re-thinking-references:-*fwd*,-*ref*-and-*ptr*-references." href=3D"#=
re-thinking-references:-*fwd*,-*ref*-and-*ptr*-references."></a>Re-thinking=
references: <em>fwd</em>, <em>ref</em> and <em>ptr</em> references.</h1><h=
2 id=3D"1.-introduction"><a name=3D"1.-introduction" href=3D"#1.-introducti=
on"></a>1. Introduction</h2><p>After watching the Alisdair Meredith=E2=80=
=99s talk =E2=80=98C++20 Language Features for a new Library=E2=80=99, I ob=
served that there=E2=80=99s a necessity to bring a sintax to express <em>pe=
rfect forwarding reference</em>, he samplered some hypotethical code:</p><p=
re class=3D"cpp hljs"><code class=3D"cpp" data-origin=3D"<pre><code class=
=3D"cpp">void foo(ArgType&amp;&amp;&amp; arg) {
bar(arg);
}
</code></pre>"><span class=3D"hljs-function"><span class=3D"hljs-keyword">v=
oid</span> <span class=3D"hljs-title">foo</span><span class=3D"hljs-params"=
>(ArgType&&& arg)</span> </span>{
bar(arg);
}
</code></pre><p>This proposal brings some motivetions on how to implement t=
his.</p><h2 id=3D"2.-some-considerations"><a name=3D"2.-some-considerations=
" href=3D"#2.-some-considerations"></a>2. Some considerations</h2><p>In C++=
, logical and mathematical operators are used to express ferences (pointers=
: *, references: &, universal references: &&). I think that usi=
ng keywords we made the code more expressive than using operators. The C# l=
anguage uses keywords to express references (e.g., <code>void bar(ref Foo f=
oo)</code>), what makes the code more self explanatory to programmers. This=
prpoposal comes with the goal of make the C++ comunity think about a difer=
ent way to do references in the C++ language.<br>This proposal cames with t=
he same vision and brings a new keywords to express refences in C++: <code>=
fwd</code></p><h2 id=3D"3.-the-new-feature"><a name=3D"3.-the-new-feature" =
href=3D"#3.-the-new-feature"></a>3. The new feature</h2><h3 id=3D"3.1-*fwd*=
:-perfect-forwarding-references-(prf)"><a name=3D"3.1-*fwd*:-perfect-forwar=
ding-references-(prf)" href=3D"#3.1-*fwd*:-perfect-forwarding-references-(p=
rf)"></a>3.1 <em>fwd</em>: Perfect Forwarding References (PRF)</h3><p>We ca=
n also call this =E2=80=98Automatic Forwarding References=E2=80=99. The goa=
l of this is to have a way to express forwarding referecens without the ne=
cessity of <code>std::forward<T>(t)</code>.<br>The new keyword for th=
is is <code>fwd</code>.</p><pre class=3D"cpp hljs"><code class=3D"cpp" data=
-origin=3D"<pre><code class=3D"cpp">class Student {
public:
// _notes is a PFR. Uses std::vector's move constructor here.
Student(fwd std::vector&lt;float&gt; _grades) : notes(_grades) =
{}
private:
std::vector&lt;float&gt; grades
};
int main() {
std::vector&lt;float&gt; defGrades{10.f, 9.5f, 7.0f};
Student bill{defGrades}; // doesn't compile.
// defNotes is moved to the constructor. =20
Student mike{std::move(defGrades)}; // works fine.
Student mike{{7.2f, 6.f, 10.f}}; // also works.
}
</code></pre>"><span class=3D"hljs-keyword">class</span> Student {
<span class=3D"hljs-keyword">public</span>:
<span class=3D"hljs-comment">// _notes is a PFR. Uses std::vector's mov=
e constructor here.</span>
Student(fwd <span class=3D"hljs-built_in">std</span>::<span class=3D"hl=
js-built_in">vector</span><<span class=3D"hljs-keyword">float</span>>=
_grades) : notes(_grades) {}
<span class=3D"hljs-keyword">private</span>:
<span class=3D"hljs-built_in">std</span>::<span class=3D"hljs-built_in"=
>vector</span><<span class=3D"hljs-keyword">float</span>> grades
};
<span class=3D"hljs-function"><span class=3D"hljs-keyword">int</span> <span=
class=3D"hljs-title">main</span><span class=3D"hljs-params">()</span> </sp=
an>{
<span class=3D"hljs-built_in">std</span>::<span class=3D"hljs-built_in"=
>vector</span><<span class=3D"hljs-keyword">float</span>> defGrades{<=
span class=3D"hljs-number">10.f</span>, <span class=3D"hljs-number">9.5f</s=
pan>, <span class=3D"hljs-number">7.0f</span>};
Student bill{defGrades}; <span class=3D"hljs-comment">// doesn't compil=
e.</span>
<span class=3D"hljs-comment">// defNotes is moved to the constructor. =
</span>
Student mike{<span class=3D"hljs-built_in">std</span>::move(defGrades)}=
; <span class=3D"hljs-comment">// works fine.</span>
Student mike{{<span class=3D"hljs-number">7.2f</span>, <span class=3D"h=
ljs-number">6.f</span>, <span class=3D"hljs-number">10.f</span>}}; <span cl=
ass=3D"hljs-comment">// also works.</span>
}
</code></pre><p>As can be seen, it=E2=80=99 not necessary use <code>std::fo=
rward</code> to <em>move</em> <strong>_notes</strong> to <strong>notes</str=
ong>. The above code is equivalent to:</p><pre class=3D"cpp hljs"><code cla=
ss=3D"cpp" data-origin=3D"<pre><code class=3D"cpp">// ...
Student(std::vector&lt;float&gt;&amp;&amp; _notes)=20
: notes(std::forward&lt;std::vector&lt;float&gt;&gt;(_no=
tes)) {}
// ...
</code></pre>"><span class=3D"hljs-comment">// ...</span>
Student(<span class=3D"hljs-built_in">std</span>::<span class=3D"hljs-built=
_in">vector</span><<span class=3D"hljs-keyword">float</span>>&&am=
p; _notes)=20
: notes(<span class=3D"hljs-built_in">std</span>::forward<<span class=
=3D"hljs-built_in">std</span>::<span class=3D"hljs-built_in">vector</span>&=
lt;<span class=3D"hljs-keyword">float</span>>>(_notes)) {}
<span class=3D"hljs-comment">// ...</span>
</code></pre><h2 id=3D"4.-considerations"><a name=3D"4.-considerations" hre=
f=3D"#4.-considerations"></a>4. Considerations</h2><p>I=E2=80=99m also in a=
major proposal covering a whole new way to express <strong>references</str=
ong> in C++, if you can feedback to me about this, I will thank you.<br>I t=
hink C++ need a more constructions like <code>fwd</code>. So, why not think=
about a similiar designe for pointers and references for C++? Think about =
it.</p>
<footer style=3D"position:fixed; font-size:.8em; text-align:right; bottom:0=
px; margin-left:-25px; height:20px; width:100%;">generated by <a href=3D"ht=
tp://pad.haroopress.com" target=3D"_blank">haroopad</a></footer>
</body>
</html>
------=_Part_3508_486376320.1515968236615--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Sun, 14 Jan 2018 16:39:56 -0800 (PST)
Raw View
------=_Part_3808_602937832.1515976796463
Content-Type: multipart/alternative;
boundary="----=_Part_3809_812099324.1515976796463"
------=_Part_3809_812099324.1515976796463
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Your proposal violates the "thou shalt not move from an lvalue without=20
explicit syntax" rule of rvalue reference design. Unless you're prepared to=
=20
declare that `ref whatever` is not an lvalue. And if it isn't... then what=
=20
is it?
I appreciate the desire for terseness. But I see no advantages to applying=
=20
the keyword `fwd` to the declaration compared to applying the keyword `fwd`=
=20
to the expression you want to forward:
Student(std::vector<float> &&_grades) : notes(fwd _grades) {}
Yes, your version is slightly shorter. But this version doesn't cause moves=
=20
without explicit syntax. And that's more important.
As for "considerations":
> I=E2=80=99m also in a major proposal covering a whole new way to express=
=20
references in C++
Why does C++ need a "whole new way to express references?" What's wrong=20
with the existing way?
> So, why not think about a similiar designe for pointers and references=20
for C++?
Absolutely not. C++ does not need more ways to express something we already=
=20
have adequate syntax for. If you really want a prefix notation for "pointer=
=20
to T", then use the existing mechanisms:
template<typename T>
using ptr_to =3D std::add_pointer_t<T>;
template<typename T>
using ref_to =3D std::add_lvalue_reference_t<T>;
template<typename T>
using rref_to =3D std::add_rvalue_reference_t<T>;
--=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/9b2d0cc7-3c4d-4f74-93ba-cb326c4e9e30%40isocpp.or=
g.
------=_Part_3809_812099324.1515976796463
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>Your proposal violates the "thou shalt not move =
from an lvalue without explicit syntax" rule of rvalue reference desig=
n. Unless you're prepared to declare that `ref whatever` is not an lval=
ue. And if it isn't... then what is it?</div><div><br></div><div>I appr=
eciate the desire for terseness. But I see no advantages to applying the ke=
yword `fwd` to the declaration compared to applying the keyword `fwd` to th=
e expression you want to forward:</div><div><br></div><div class=3D"prettyp=
rint" style=3D"border: 1px solid rgb(187, 187, 187); word-wrap: break-word;=
background-color: rgb(250, 250, 250);"><code class=3D"prettyprint"><div cl=
ass=3D"subprettyprint"><span class=3D"styled-by-prettify" style=3D"color: #=
606;">Student</span><span class=3D"styled-by-prettify" style=3D"color: #660=
;">(</span><span class=3D"styled-by-prettify" style=3D"color: #000;">std</s=
pan><span class=3D"styled-by-prettify" style=3D"color: #660;">::</span><spa=
n class=3D"styled-by-prettify" style=3D"color: #000;">vector</span><span cl=
ass=3D"styled-by-prettify" style=3D"color: #080;"><float></span><span=
class=3D"styled-by-prettify" style=3D"color: #000;"> </span><span class=3D=
"styled-by-prettify" style=3D"color: #660;">&&</span><span class=3D=
"styled-by-prettify" style=3D"color: #000;">_grades</span><span class=3D"st=
yled-by-prettify" style=3D"color: #660;">)</span><span class=3D"styled-by-p=
rettify" style=3D"color: #000;"> </span><span class=3D"styled-by-prettify" =
style=3D"color: #660;">:</span><span class=3D"styled-by-prettify" style=3D"=
color: #000;"> notes</span><span class=3D"styled-by-prettify" style=3D"colo=
r: #660;">(</span><span class=3D"styled-by-prettify" style=3D"color: #000;"=
>fwd _grades</span><span class=3D"styled-by-prettify" style=3D"color: #660;=
">)</span><span class=3D"styled-by-prettify" style=3D"color: #000;"> </span=
><span class=3D"styled-by-prettify" style=3D"color: #660;">{}</span></div><=
/code></div><div><br></div><div>Yes, your version is slightly shorter. But =
this version doesn't cause moves without explicit syntax. And that'=
s more important.<br></div><div><br></div><div>As for "considerations&=
quot;:</div><div><br></div><div>>=C2=A0I=E2=80=99m also in a major propo=
sal covering a whole new way to express references in C++</div><div><br></d=
iv><div>Why does C++ need a "whole new way to express references?"=
; What's wrong with the existing way?</div><div><br></div><div>>=C2=
=A0So, why not think about a similiar designe for pointers and references f=
or C++?</div><div><br></div><div>Absolutely not. C++ does not need more way=
s to express something we already have adequate syntax for. If you really w=
ant a prefix notation for "pointer to T", then use the existing m=
echanisms:</div><div><br></div><div class=3D"prettyprint" style=3D"border: =
1px solid rgb(187, 187, 187); word-wrap: break-word; background-color: rgb(=
250, 250, 250);"><code class=3D"prettyprint"><div class=3D"subprettyprint">=
<span class=3D"styled-by-prettify" style=3D"color: #008;">template</span><s=
pan class=3D"styled-by-prettify" style=3D"color: #660;"><</span><span cl=
ass=3D"styled-by-prettify" style=3D"color: #008;">typename</span><span clas=
s=3D"styled-by-prettify" style=3D"color: #000;"> T</span><span class=3D"sty=
led-by-prettify" style=3D"color: #660;">></span><span class=3D"styled-by=
-prettify" style=3D"color: #000;"><br></span><span class=3D"styled-by-prett=
ify" style=3D"color: #008;">using</span><span class=3D"styled-by-prettify" =
style=3D"color: #000;"> ptr_to </span><span class=3D"styled-by-prettify" st=
yle=3D"color: #660;">=3D</span><span class=3D"styled-by-prettify" style=3D"=
color: #000;"> std</span><span class=3D"styled-by-prettify" style=3D"color:=
#660;">::</span><span class=3D"styled-by-prettify" style=3D"color: #000;">=
add_pointer_t</span><span class=3D"styled-by-prettify" style=3D"color: #660=
;"><</span><span class=3D"styled-by-prettify" style=3D"color: #000;">T</=
span><span class=3D"styled-by-prettify" style=3D"color: #660;">>;</span>=
<span class=3D"styled-by-prettify" style=3D"color: #000;"><br></span><span =
class=3D"styled-by-prettify" style=3D"color: #008;">template</span><span cl=
ass=3D"styled-by-prettify" style=3D"color: #660;"><</span><span class=3D=
"styled-by-prettify" style=3D"color: #008;">typename</span><span class=3D"s=
tyled-by-prettify" style=3D"color: #000;"> T</span><span class=3D"styled-by=
-prettify" style=3D"color: #660;">></span><span class=3D"styled-by-prett=
ify" style=3D"color: #000;"><br></span><span class=3D"styled-by-prettify" s=
tyle=3D"color: #008;">using</span><span class=3D"styled-by-prettify" style=
=3D"color: #000;"> ref_to </span><span class=3D"styled-by-prettify" style=
=3D"color: #660;">=3D</span><span class=3D"styled-by-prettify" style=3D"col=
or: #000;"> std</span><span class=3D"styled-by-prettify" style=3D"color: #6=
60;">::</span><span class=3D"styled-by-prettify" style=3D"color: #000;">add=
_lvalue_reference_t</span><span class=3D"styled-by-prettify" style=3D"color=
: #660;"><</span><span class=3D"styled-by-prettify" style=3D"color: #000=
;">T</span><span class=3D"styled-by-prettify" style=3D"color: #660;">>;<=
/span><span class=3D"styled-by-prettify" style=3D"color: #000;"><br></span>=
<span class=3D"styled-by-prettify" style=3D"color: #008;">template</span><s=
pan class=3D"styled-by-prettify" style=3D"color: #660;"><</span><span cl=
ass=3D"styled-by-prettify" style=3D"color: #008;">typename</span><span clas=
s=3D"styled-by-prettify" style=3D"color: #000;"> T</span><span class=3D"sty=
led-by-prettify" style=3D"color: #660;">></span><span class=3D"styled-by=
-prettify" style=3D"color: #000;"><br></span><span class=3D"styled-by-prett=
ify" style=3D"color: #008;">using</span><span class=3D"styled-by-prettify" =
style=3D"color: #000;"> rref_to </span><span class=3D"styled-by-prettify" s=
tyle=3D"color: #660;">=3D</span><span class=3D"styled-by-prettify" style=3D=
"color: #000;"> std</span><span class=3D"styled-by-prettify" style=3D"color=
: #660;">::</span><span class=3D"styled-by-prettify" style=3D"color: #000;"=
>add_rvalue_reference_t</span><span class=3D"styled-by-prettify" style=3D"c=
olor: #660;"><</span><span class=3D"styled-by-prettify" style=3D"color: =
#000;">T</span><span class=3D"styled-by-prettify" style=3D"color: #660;">&g=
t;;</span><span class=3D"styled-by-prettify" style=3D"color: #000;"><br></s=
pan></div></code></div><div><br></div><div><br></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/9b2d0cc7-3c4d-4f74-93ba-cb326c4e9e30%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/9b2d0cc7-3c4d-4f74-93ba-cb326c4e9e30=
%40isocpp.org</a>.<br />
------=_Part_3809_812099324.1515976796463--
------=_Part_3808_602937832.1515976796463--
.
Author: =?UTF-8?Q?Jos=C3=A9_Rodrigo?= <rodrigojose690@gmail.com>
Date: Mon, 15 Jan 2018 07:10:03 -0200
Raw View
--94eb2c1cd218cac8f00562ccfab2
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Yeah, with 'new way', a mean a eu to have references (&) which we can
mutate, and a more safe pointer notation.
Em 14/01/2018 10:39 PM, "Nicol Bolas" <jmckesson@gmail.com> escreveu:
> Your proposal violates the "thou shalt not move from an lvalue without
> explicit syntax" rule of rvalue reference design. Unless you're prepared =
to
> declare that `ref whatever` is not an lvalue. And if it isn't... then wha=
t
> is it?
>
> I appreciate the desire for terseness. But I see no advantages to applyin=
g
> the keyword `fwd` to the declaration compared to applying the keyword `fw=
d`
> to the expression you want to forward:
>
> Student(std::vector<float> &&_grades) : notes(fwd _grades) {}
>
> Yes, your version is slightly shorter. But this version doesn't cause
> moves without explicit syntax. And that's more important.
>
> As for "considerations":
>
> > I=E2=80=99m also in a major proposal covering a whole new way to expres=
s
> references in C++
>
> Why does C++ need a "whole new way to express references?" What's wrong
> with the existing way?
>
> > So, why not think about a similiar designe for pointers and references
> for C++?
>
> Absolutely not. C++ does not need more ways to express something we
> already have adequate syntax for. If you really want a prefix notation fo=
r
> "pointer to T", then use the existing mechanisms:
>
> template<typename T>
> using ptr_to =3D std::add_pointer_t<T>;
> template<typename T>
> using ref_to =3D std::add_lvalue_reference_t<T>;
> template<typename T>
> using rref_to =3D std::add_rvalue_reference_t<T>;
>
>
> --
> 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/9b2d0cc7-3c4d-4f74-
> 93ba-cb326c4e9e30%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/9b2d0cc7-3c=
4d-4f74-93ba-cb326c4e9e30%40isocpp.org?utm_medium=3Demail&utm_source=3Dfoot=
er>
> .
>
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/CAJe%2Baq_4bYAib3WqFykTABhhbFzhqk_-yJ7f3zCU60Dju=
Yp%3DWQ%40mail.gmail.com.
--94eb2c1cd218cac8f00562ccfab2
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto">Yeah, with 'new way', a mean a eu to have referen=
ces (&) which we can mutate, and a more safe pointer notation.</div><di=
v class=3D"gmail_extra"><br><div class=3D"gmail_quote">Em 14/01/2018 10:39 =
PM, "Nicol Bolas" <<a href=3D"mailto:jmckesson@gmail.com">jmck=
esson@gmail.com</a>> escreveu:<br type=3D"attribution"><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex"><div dir=3D"ltr"><div>Your proposal violates the "thou s=
halt not move from an lvalue without explicit syntax" rule of rvalue r=
eference design. Unless you're prepared to declare that `ref whatever` =
is not an lvalue. And if it isn't... then what is it?</div><div><br></d=
iv><div>I appreciate the desire for terseness. But I see no advantages to a=
pplying the keyword `fwd` to the declaration compared to applying the keywo=
rd `fwd` to the expression you want to forward:</div><div><br></div><div cl=
ass=3D"m_-8215409047113007442prettyprint" style=3D"border:1px solid rgb(187=
,187,187);word-wrap:break-word;background-color:rgb(250,250,250)"><code cla=
ss=3D"m_-8215409047113007442prettyprint"><div class=3D"m_-82154090471130074=
42subprettyprint"><span class=3D"m_-8215409047113007442styled-by-prettify" =
style=3D"color:#606">Student</span><span class=3D"m_-8215409047113007442sty=
led-by-prettify" style=3D"color:#660">(</span><span class=3D"m_-82154090471=
13007442styled-by-prettify" style=3D"color:#000">std</span><span class=3D"m=
_-8215409047113007442styled-by-prettify" style=3D"color:#660">::</span><spa=
n class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000">v=
ector</span><span class=3D"m_-8215409047113007442styled-by-prettify" style=
=3D"color:#080"><float></span><span class=3D"m_-8215409047113007442st=
yled-by-prettify" style=3D"color:#000"> </span><span class=3D"m_-8215409047=
113007442styled-by-prettify" style=3D"color:#660">&&</span><span cl=
ass=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000">_grad=
es</span><span class=3D"m_-8215409047113007442styled-by-prettify" style=3D"=
color:#660">)</span><span class=3D"m_-8215409047113007442styled-by-prettify=
" style=3D"color:#000"> </span><span class=3D"m_-8215409047113007442styled-=
by-prettify" style=3D"color:#660">:</span><span class=3D"m_-821540904711300=
7442styled-by-prettify" style=3D"color:#000"> notes</span><span class=3D"m_=
-8215409047113007442styled-by-prettify" style=3D"color:#660">(</span><span =
class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000">fwd=
_grades</span><span class=3D"m_-8215409047113007442styled-by-prettify" sty=
le=3D"color:#660">)</span><span class=3D"m_-8215409047113007442styled-by-pr=
ettify" style=3D"color:#000"> </span><span class=3D"m_-8215409047113007442s=
tyled-by-prettify" style=3D"color:#660">{}</span></div></code></div><div><b=
r></div><div>Yes, your version is slightly shorter. But this version doesn&=
#39;t cause moves without explicit syntax. And that's more important.<b=
r></div><div><br></div><div>As for "considerations":</div><div><b=
r></div><div>>=C2=A0I=E2=80=99m also in a major proposal covering a whol=
e new way to express references in C++</div><div><br></div><div>Why does C+=
+ need a "whole new way to express references?" What's wrong =
with the existing way?</div><div><br></div><div>>=C2=A0So, why not think=
about a similiar designe for pointers and references for C++?</div><div><b=
r></div><div>Absolutely not. C++ does not need more ways to express somethi=
ng we already have adequate syntax for. If you really want a prefix notatio=
n for "pointer to T", then use the existing mechanisms:</div><div=
><br></div><div class=3D"m_-8215409047113007442prettyprint" style=3D"border=
:1px solid rgb(187,187,187);word-wrap:break-word;background-color:rgb(250,2=
50,250)"><code class=3D"m_-8215409047113007442prettyprint"><div class=3D"m_=
-8215409047113007442subprettyprint"><span class=3D"m_-8215409047113007442st=
yled-by-prettify" style=3D"color:#008">template</span><span class=3D"m_-821=
5409047113007442styled-by-prettify" style=3D"color:#660"><</span><span c=
lass=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#008">type=
name</span><span class=3D"m_-8215409047113007442styled-by-prettify" style=
=3D"color:#000"> T</span><span class=3D"m_-8215409047113007442styled-by-pre=
ttify" style=3D"color:#660">></span><span class=3D"m_-821540904711300744=
2styled-by-prettify" style=3D"color:#000"><br></span><span class=3D"m_-8215=
409047113007442styled-by-prettify" style=3D"color:#008">using</span><span c=
lass=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000"> ptr=
_to </span><span class=3D"m_-8215409047113007442styled-by-prettify" style=
=3D"color:#660">=3D</span><span class=3D"m_-8215409047113007442styled-by-pr=
ettify" style=3D"color:#000"> std</span><span class=3D"m_-82154090471130074=
42styled-by-prettify" style=3D"color:#660">::</span><span class=3D"m_-82154=
09047113007442styled-by-prettify" style=3D"color:#000">add_pointer_t</span>=
<span class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#66=
0"><</span><span class=3D"m_-8215409047113007442styled-by-prettify" styl=
e=3D"color:#000">T</span><span class=3D"m_-8215409047113007442styled-by-pre=
ttify" style=3D"color:#660">>;</span><span class=3D"m_-82154090471130074=
42styled-by-prettify" style=3D"color:#000"><br></span><span class=3D"m_-821=
5409047113007442styled-by-prettify" style=3D"color:#008">template</span><sp=
an class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#660">=
<</span><span class=3D"m_-8215409047113007442styled-by-prettify" style=
=3D"color:#008">typename</span><span class=3D"m_-8215409047113007442styled-=
by-prettify" style=3D"color:#000"> T</span><span class=3D"m_-82154090471130=
07442styled-by-prettify" style=3D"color:#660">></span><span class=3D"m_-=
8215409047113007442styled-by-prettify" style=3D"color:#000"><br></span><spa=
n class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#008">u=
sing</span><span class=3D"m_-8215409047113007442styled-by-prettify" style=
=3D"color:#000"> ref_to </span><span class=3D"m_-8215409047113007442styled-=
by-prettify" style=3D"color:#660">=3D</span><span class=3D"m_-8215409047113=
007442styled-by-prettify" style=3D"color:#000"> std</span><span class=3D"m_=
-8215409047113007442styled-by-prettify" style=3D"color:#660">::</span><span=
class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000">ad=
d_lvalue_reference_t</span><span class=3D"m_-8215409047113007442styled-by-p=
rettify" style=3D"color:#660"><</span><span class=3D"m_-8215409047113007=
442styled-by-prettify" style=3D"color:#000">T</span><span class=3D"m_-82154=
09047113007442styled-by-prettify" style=3D"color:#660">><wbr>;</span><sp=
an class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000">=
<br></span><span class=3D"m_-8215409047113007442styled-by-prettify" style=
=3D"color:#008">template</span><span class=3D"m_-8215409047113007442styled-=
by-prettify" style=3D"color:#660"><</span><span class=3D"m_-821540904711=
3007442styled-by-prettify" style=3D"color:#008">typename</span><span class=
=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000"> T</span=
><span class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#6=
60">></span><span class=3D"m_-8215409047113007442styled-by-prettify" sty=
le=3D"color:#000"><br></span><span class=3D"m_-8215409047113007442styled-by=
-prettify" style=3D"color:#008">using</span><span class=3D"m_-8215409047113=
007442styled-by-prettify" style=3D"color:#000"> rref_to </span><span class=
=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#660">=3D</spa=
n><span class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#=
000"> std</span><span class=3D"m_-8215409047113007442styled-by-prettify" st=
yle=3D"color:#660">::</span><span class=3D"m_-8215409047113007442styled-by-=
prettify" style=3D"color:#000">add_rvalue_reference_t</span><span class=3D"=
m_-8215409047113007442styled-by-prettify" style=3D"color:#660"><</span><=
span class=3D"m_-8215409047113007442styled-by-prettify" style=3D"color:#000=
">T</span><span class=3D"m_-8215409047113007442styled-by-prettify" style=3D=
"color:#660">><wbr>;</span><span class=3D"m_-8215409047113007442styled-b=
y-prettify" style=3D"color:#000"><br></span></div></code></div><div><br></d=
iv><div><br></div></div>
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/9b2d0cc7-3c4d-4f74-93ba-cb326c4e9e30%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/9b2d=
0cc7-3c4d-4f74-<wbr>93ba-cb326c4e9e30%40isocpp.org</a><wbr>.<br>
</blockquote></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CAJe%2Baq_4bYAib3WqFykTABhhbFzhqk_-yJ=
7f3zCU60DjuYp%3DWQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAJe%2Baq_4bY=
Aib3WqFykTABhhbFzhqk_-yJ7f3zCU60DjuYp%3DWQ%40mail.gmail.com</a>.<br />
--94eb2c1cd218cac8f00562ccfab2--
.
Author: mihailnajdenov@gmail.com
Date: Mon, 15 Jan 2018 01:51:26 -0800 (PST)
Raw View
------=_Part_295_1610474493.1516009886897
Content-Type: multipart/alternative;
boundary="----=_Part_296_1598465186.1516009886897"
------=_Part_296_1598465186.1516009886897
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Monday, January 15, 2018 at 11:10:07 AM UTC+2, Jos=C3=A9 Rodrigo wrote:
>
> Yeah, with 'new way', a mean a eu to have references (&) which we can=20
> mutate, and a more safe pointer notation.
>
> ..
>
Mutating references will be handled by operator dot overloading (of some=20
sort). C++ will *never ever* change fundamental things like references and=
=20
pointers.=20
The desire for a forwarding ctor args is low, as the current=20
take-by-copy-and-move is good enough (and overloads for a if=20
desired/needed).
Also note, your examples have no forwarding references to begin with.=20
Student(std::vector<float>&& _notes)=20
: notes(std::forward<std::vector<float>>(_notes)) {}
This is not a forwarding reference, just an rvalue (and you can use move=20
instead).
--=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/3aac097f-4ba9-4669-b5f6-e5afdda758a1%40isocpp.or=
g.
------=_Part_296_1598465186.1516009886897
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Monday, January 15, 2018 at 11:10:07 AM UTC+2, =
Jos=C3=A9 Rodrigo wrote:<blockquote class=3D"gmail_quote" style=3D"margin: =
0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div d=
ir=3D"auto">Yeah, with 'new way', a mean a eu to have references (&=
amp;) which we can mutate, and a more safe pointer notation.</div><div><br>=
<div class=3D"gmail_quote">..</div></div></blockquote><div><br></div><div>M=
utating references will be handled by operator dot overloading (of some sor=
t). C++ will <i>never ever</i> change fundamental things like references an=
d pointers.=C2=A0</div><div><br></div><div>The desire for a forwarding ctor=
args is low, as the current take-by-copy-and-move is good enough (and over=
loads for a if desired/needed).</div><div><br></div><div>Also note, your ex=
amples have no forwarding references to begin with.=C2=A0</div><div><br></d=
iv><div><font face=3D"courier new,monospace">Student(std::vector<float&g=
t;&& _notes) <br> : notes(std::forward<std::vector<float>=
;>(_notes)) {}</font></div><div><font face=3D"arial,sans-serif"><br>This=
is not a forwarding reference, just an rvalue (and you can use move instea=
d).</font></div><div></div><div><font face=3D"courier new"><br></font></div=
></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3aac097f-4ba9-4669-b5f6-e5afdda758a1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/3aac097f-4ba9-4669-b5f6-e5afdda758a1=
%40isocpp.org</a>.<br />
------=_Part_296_1598465186.1516009886897--
------=_Part_295_1610474493.1516009886897--
.
Author: =?UTF-8?Q?Jos=C3=A9_Rodrigo?= <rodrigojose690@gmail.com>
Date: Mon, 15 Jan 2018 08:06:12 -0200
Raw View
--94eb2c0d9b40957b530562cdc335
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Please, before commenting here, watch the mentioned talk.
Em 15/01/2018 7:51 AM, <mihailnajdenov@gmail.com> escreveu:
>
>
> On Monday, January 15, 2018 at 11:10:07 AM UTC+2, Jos=C3=A9 Rodrigo wrote=
:
>>
>> Yeah, with 'new way', a mean a eu to have references (&) which we can
>> mutate, and a more safe pointer notation.
>>
>> ..
>>
>
> Mutating references will be handled by operator dot overloading (of some
> sort). C++ will *never ever* change fundamental things like references
> and pointers.
>
> The desire for a forwarding ctor args is low, as the current
> take-by-copy-and-move is good enough (and overloads for a if
> desired/needed).
>
> Also note, your examples have no forwarding references to begin with.
>
> Student(std::vector<float>&& _notes)
> : notes(std::forward<std::vector<float>>(_notes)) {}
>
> This is not a forwarding reference, just an rvalue (and you can use move
> instead).
>
> --
> 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/3aac097f-4ba9-4669-
> b5f6-e5afdda758a1%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/3aac097f-4b=
a9-4669-b5f6-e5afdda758a1%40isocpp.org?utm_medium=3Demail&utm_source=3Dfoot=
er>
> .
>
--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/CAJe%2Baq-Uv7q%2BUmvM_-2f0Uggf1jFScbB4RU4zt2Ndo_=
dGrf-cA%40mail.gmail.com.
--94eb2c0d9b40957b530562cdc335
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"auto">Please, before commenting here, watch the mentioned talk.=
</div><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">Em 15/01/20=
18 7:51 AM, <<a href=3D"mailto:mihailnajdenov@gmail.com">mihailnajdenov=
@gmail.com</a>> escreveu:<br type=3D"attribution"><blockquote class=3D"g=
mail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-l=
eft:1ex"><div dir=3D"ltr"><br><br>On Monday, January 15, 2018 at 11:10:07 A=
M UTC+2, Jos=C3=A9 Rodrigo wrote:<blockquote class=3D"gmail_quote" style=3D=
"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><d=
iv dir=3D"auto">Yeah, with 'new way', a mean a eu to have reference=
s (&) which we can mutate, and a more safe pointer notation.</div><div>=
<br><div class=3D"gmail_quote">..</div></div></blockquote><div><br></div><d=
iv>Mutating references will be handled by operator dot overloading (of some=
sort). C++ will <i>never ever</i> change fundamental things like reference=
s and pointers.=C2=A0</div><div><br></div><div>The desire for a forwarding =
ctor args is low, as the current take-by-copy-and-move is good enough (and =
overloads for a if desired/needed).</div><div><br></div><div>Also note, you=
r examples have no forwarding references to begin with.=C2=A0</div><div><br=
></div><div><font face=3D"courier new,monospace">Student(std::vector<flo=
at>&& _notes) <br> : notes(std::forward<std::<wbr>vector<=
;float>>(_notes)) {}</font></div><div><font face=3D"arial,sans-serif"=
><br>This is not a forwarding reference, just an rvalue (and you can use mo=
ve instead).</font></div><div></div><div><font face=3D"courier new"><br></f=
ont></div></div>
<p></p>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3aac097f-4ba9-4669-b5f6-e5afdda758a1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/3aac=
097f-4ba9-4669-<wbr>b5f6-e5afdda758a1%40isocpp.org</a><wbr>.<br>
</blockquote></div></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/CAJe%2Baq-Uv7q%2BUmvM_-2f0Uggf1jFScbB=
4RU4zt2Ndo_dGrf-cA%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter"=
>https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAJe%2Baq-Uv7=
q%2BUmvM_-2f0Uggf1jFScbB4RU4zt2Ndo_dGrf-cA%40mail.gmail.com</a>.<br />
--94eb2c0d9b40957b530562cdc335--
.
Author: =?UTF-8?Q?Daniel_Kr=C3=BCgler?= <daniel.kruegler@gmail.com>
Date: Mon, 15 Jan 2018 11:29:30 +0100
Raw View
2018-01-15 11:06 GMT+01:00 Jos=C3=A9 Rodrigo <rodrigojose690@gmail.com>:
> Please, before commenting here, watch the mentioned talk.
You should provide a link to that talk.
- Daniel
--=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/CAGNvRgA3eD7u3CWrmZygcXvTV9a2f97uY__C6rTvZs7ik%3=
D6fGw%40mail.gmail.com.
.
Author: mihailnajdenov@gmail.com
Date: Mon, 15 Jan 2018 02:33:26 -0800 (PST)
Raw View
------=_Part_4834_1450157162.1516012406846
Content-Type: multipart/alternative;
boundary="----=_Part_4835_874671705.1516012406846"
------=_Part_4835_874671705.1516012406846
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Monday, January 15, 2018 at 12:06:16 PM UTC+2, Jos=C3=A9 Rodrigo wrote:
>
> Please, before commenting here, watch the mentioned talk.
> ...
>
OK, I watched that section. Look around 55:00 * :
ArgType is either a Concept or a (mini) template. None of your examples are=
=20
either of these - you use concrete types.
Forwarding reference work only with template arguments. I didn't watch the=
=20
whole presentation, but I really doubt Alisdair proposed chaning this.=20
* https://youtu.be/hizGxfDdc7M
--=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/46256164-353a-40db-8e12-481e1bafdd92%40isocpp.or=
g.
------=_Part_4835_874671705.1516012406846
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Monday, January 15, 2018 at 12:06:16 PM UTC+2, =
Jos=C3=A9 Rodrigo wrote:<blockquote class=3D"gmail_quote" style=3D"margin: =
0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div d=
ir=3D"auto">Please, before commenting here, watch the mentioned talk.</div>=
<div>...</div></blockquote><div><br></div><div>OK, I watched that section. =
Look around 55:00 * :</div><div>ArgType is either a Concept or a (mini) tem=
plate. None of your examples are either of these - you use concrete types.<=
/div><div><br></div><div style=3D"text-align: left;">Forwarding reference w=
ork only with template arguments. I didn't watch the whole presentation=
, but I really doubt=C2=A0Alisdair proposed chaning this.=C2=A0</div><div s=
tyle=3D"text-align: left;"><br></div><div style=3D"text-align: left;"><br><=
/div><div style=3D"text-align: left;">* https://youtu.be/hizGxfDdc7M</div><=
/div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/46256164-353a-40db-8e12-481e1bafdd92%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/46256164-353a-40db-8e12-481e1bafdd92=
%40isocpp.org</a>.<br />
------=_Part_4835_874671705.1516012406846--
------=_Part_4834_1450157162.1516012406846--
.
Author: Nicol Bolas <jmckesson@gmail.com>
Date: Mon, 15 Jan 2018 09:39:48 -0800 (PST)
Raw View
------=_Part_5995_1452778827.1516037988190
Content-Type: multipart/alternative;
boundary="----=_Part_5996_1875177852.1516037988190"
------=_Part_5996_1875177852.1516037988190
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
On Monday, January 15, 2018 at 4:10:07 AM UTC-5, Jos=C3=A9 Rodrigo wrote:
>
> Yeah, with 'new way', a mean a eu to have references (&) which we can=20
> mutate, and a more safe pointer notation.
>
Why do we need rebindable references?
What is un"safe" about pointer* notation*? Pointer ownership can be unsafe.=
=20
Pointer *usage* can be unsafe. But pointer *notation* isn't particularly=20
unsafe. The closest to "unsafe" you might get is array-to-pointer decaying.=
=20
But that's not "unsafe" so much as just "highly annoying".
--=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/6cc87d63-f1be-4c27-8d3d-ae4df4e84ff4%40isocpp.or=
g.
------=_Part_5996_1875177852.1516037988190
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On Monday, January 15, 2018 at 4:10:07 AM UTC-5, Jos=C3=A9=
Rodrigo 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"aut=
o">Yeah, with 'new way', a mean a eu to have references (&) whi=
ch we can mutate, and a more safe pointer notation.</div></blockquote><div>=
<br></div><div>Why do we need rebindable references?</div><div><br></div><d=
iv>What is un"safe" about pointer<i> notation</i>? Pointer owners=
hip can be unsafe. Pointer <i>usage</i> can be unsafe. But pointer <i>notat=
ion</i> isn't particularly unsafe. The closest to "unsafe" yo=
u might get is array-to-pointer decaying. But that's not "unsafe&q=
uot; so much as just "highly annoying".</div><div><br></div><bloc=
kquote class=3D"gmail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-l=
eft: 1px #ccc solid;padding-left: 1ex;"><div><div class=3D"gmail_quote"><bl=
ockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #=
ccc solid;padding-left:1ex">
</blockquote></div></div>
</blockquote></div>
<p></p>
-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/6cc87d63-f1be-4c27-8d3d-ae4df4e84ff4%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/6cc87d63-f1be-4c27-8d3d-ae4df4e84ff4=
%40isocpp.org</a>.<br />
------=_Part_5996_1875177852.1516037988190--
------=_Part_5995_1452778827.1516037988190--
.