Topic: [std-proposals] Re: Adding the Keyword proxy


Author: Bryce Glover <randomdsdevel@gmail.com>
Date: Sun, 14 May 2017 20:55:03 -0400
Raw View
--Apple-Mail=_E4B7E3B4-0210-4351-85CF-FC5B5CA24407
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="UTF-8"

> (snipped=E2=80=A6)

     Implementing a way to hide the parts of itself that a derived class in=
herits from its parent base class behind a quasi-opaque, type-erasing =E2=
=80=98pointer to implementation=E2=80=99 from which it could then retrieve =
this information sounds like it could be interesting and could eventually e=
nd up being useful to somebody, but I=E2=80=99m not entirely certain how we=
ll the introduction of such a concept contributes to the discussion underta=
ken in this thread so far.  Perhaps one could implement a fully functional =
run-time concept wrapper implementing properly forwarding versions of the f=
unctionality expected of the type of objects the compile-time concept assoc=
iated with this wrapper would require it to contain using this technique, b=
ut I feel both that a run-time concept facility should be easy to use by la=
nguage users with abilities nearer to beginner level than this particular i=
teration of this construct and that said iteration doesn=E2=80=99t feel qui=
te right to me when it comes to usability and understandability, but you sh=
ould probably trust other peoples=E2=80=99 reactions more than mine on this=
 front, as I=E2=80=99m not the best person to give feedback on these kinds =
of matters.  In any case, it strikes me that a version of this =E2=80=98ind=
irect inheritance=E2=80=99 that one might consider more acceptably traditio=
nal would involve classes satisfying concepts related by subsumption, but t=
hat doesn=E2=80=99t really describe the model you=E2=80=99ve come up with. =
 Also, the part of your post where you started talking about maintaining ob=
ject dispatch tables on top of the virtual function dispatch tables that al=
ready exist reminded me indirectly of some of the work that=E2=80=99s alrea=
dy been done to describe and even implement open multimethods, but there=E2=
=80=99s a chance that this impression of mine could be somewhat misguided. =
 The additional complexity you consider at the end probably doesn=E2=80=99t=
 help, either, but, again, I=E2=80=99m not really the best individual to go=
 through all of this with somebody despite wanting to use it myself. =20

=E2=80=94=E2=80=89Bryce Glover
=E3=80=80=E2=80=89RandomDSdevel@gmail.com

--=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
To view this discussion on the web visit https://groups.google.com/a/isocpp=
..org/d/msgid/std-proposals/18DFAA3F-F4BB-4A9B-8B77-2F780F5BA4DE%40gmail.com=
..

--Apple-Mail=_E4B7E3B4-0210-4351-85CF-FC5B5CA24407
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html charset=
=3Dutf-8"></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><blockquote type=
=3D"cite" class=3D"">(snipped=E2=80=A6)</blockquote><br class=3D""><div cla=
ss=3D"">&nbsp; &nbsp; &nbsp;Implementing a way to hide the parts of itself =
that a derived class inherits from its parent base class behind a quasi-opa=
que, type-erasing =E2=80=98pointer to implementation=E2=80=99 from which it=
 could then retrieve this information sounds like it could be interesting a=
nd could eventually end up being useful to <i class=3D"">somebody</i>, but =
I=E2=80=99m not entirely certain how well the introduction of such a concep=
t contributes to the discussion undertaken in this thread so far. &nbsp;<i =
class=3D"">Perhaps</i>&nbsp;one could implement a fully functional run-time=
 concept wrapper implementing properly forwarding versions of the functiona=
lity expected of the type of objects the compile-time concept associated wi=
th this wrapper would require it to contain using this technique, but I fee=
l both that a run-time concept facility should be easy to use by language u=
sers with abilities nearer to beginner level than this particular iteration=
 of this construct and that said iteration doesn=E2=80=99t feel quite right=
 to me when it comes to usability and understandability, but you should pro=
bably trust other peoples=E2=80=99 reactions more than mine on this front, =
as I=E2=80=99m not the best person to give feedback on these kinds of matte=
rs. &nbsp;In any case, it strikes me that a version of this =E2=80=98indire=
ct inheritance=E2=80=99 that one might consider more acceptably traditional=
 would involve classes satisfying concepts related by subsumption, but that=
 doesn=E2=80=99t really describe the model you=E2=80=99ve come up with. &nb=
sp;Also, the part of your post where you started talking about maintaining =
object dispatch tables on top of the virtual function dispatch tables that =
already exist reminded me indirectly of some of the work that=E2=80=99s alr=
eady been done to describe and even implement open multimethods, but there=
=E2=80=99s a chance that <i class=3D"">this</i>&nbsp;impression of mine cou=
ld be somewhat misguided. &nbsp;The additional complexity you consider at t=
he end probably doesn=E2=80=99t help, either, but, again, I=E2=80=99m not r=
eally the best individual to go through all of this with somebody despite w=
anting to use it myself. &nbsp;</div><br class=3D""><div class=3D"">
<div style=3D"color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-w=
rap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-=
space;" class=3D""><div style=3D"color: rgb(0, 0, 0); letter-spacing: norma=
l; orphans: auto; text-align: start; text-indent: 0px; text-transform: none=
; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke=
-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-=
break: after-white-space;" class=3D""><div class=3D"">=E2=80=94=E2=80=89Bry=
ce Glover</div><div class=3D"">=E3=80=80=E2=80=89<a href=3D"mailto:RandomDS=
devel@gmail.com" class=3D"">RandomDSdevel@gmail.com</a></div></div></div></=
div></body></html>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&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/18DFAA3F-F4BB-4A9B-8B77-2F780F5BA4DE%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/18DFAA3F-F4BB-4A9B-8B77-2F780F5BA4DE%=
40gmail.com</a>.<br />

--Apple-Mail=_E4B7E3B4-0210-4351-85CF-FC5B5CA24407--

.


Author: Bryce Glover <randomdsdevel@gmail.com>
Date: Wed, 17 May 2017 19:51:00 -0400
Raw View
--Apple-Mail=_B0BF6E23-8523-49AA-8701-5D4629C234E6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset="UTF-8"

> On May 17, 2017, at 6:13 PM, std-proposals@isocpp.org wrote:
>=20
> Bengt Gustafsson <bengt.gustafsson@beamways.com <mailto:bengt.gustafsson@=
beamways.com>>: May 16 02:46PM -0700=20
>=20
> I really do think that the feature I sketched in my last writing caters f=
or the needs you have identified. I do realize that it uses a quite differe=
nt=20
> method to achieve the goals, and the code examples I showed are just the =
kind of =E2=80=9Cwrappers" that you (correctly) think will be necessary to =
get the feature used.
>=20
> I also hope that my approach corrects the shortcomings regarding lifetime=
 management that Nicol and others have pointed out with your approach, and =
which I have not found any means to correct within the scope of that approa=
ch. Furthermore I achieve this without having to invent a new type of =E2=
=80=9Cstruct declaration" and instead reuse the one we have.
>=20
> To complement the solution for the complete "proxy" case my approach offe=
rs a *light* version if you do have a common base class that the types you =
want to type erase inherit from, this version having no runtime overhead wh=
atsoever compared to the underlying storage management (exemplified by the =
shared_ptr or deep_ptr).=20
>=20
> Maybe I did a pedagogical mistake in placing the *light* version at the t=
op of the writing, which is why I wrote about the plot twist to keep you gu=
ys reading. To simplify here is a short form "gist" of the feature suggeste=
d:
> =20
> - Indirect inheritance inherits functionality from an object whose this-p=
ointer is retrieved by calling a method on each use.
>=20
> - Duck typed indirect inheritance augments this functionality by providin=
g a "compliant" type in the ctor's initializer list, which lets the compile=
r create the required translation table.
>=20
> For more info including rationale and examples see the previous post.

Dear Bengt,=20

     Are responding to me or to Mingxin Wang, the OP, here?  I=E2=80=99m no=
t him. =20

A tad confused here,=20
     Bryce Glover
     RandomDSdevel@gmail.com <mailto:RandomDSdevel@gmail.com>

P. S.:  At this point, I=E2=80=99ve decided I=E2=80=99m going to duck out o=
f discussions on this topic here and elsewhere.  Nobody involved needs a po=
tential novice end-user like myself continuing to ask stupid questions that=
 have probably already been considered during such a feature=E2=80=99s desi=
gn phase, so I=E2=80=99m going back to lurking and waiting for new proposal=
s (I do read the mailings and papers that might end up in them just to keep=
 up with what=E2=80=99s happening, after all.) =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/3FFB97B5-FB86-4469-9BBB-FB0CE8905FF5%40gmail.com=
..

--Apple-Mail=_B0BF6E23-8523-49AA-8701-5D4629C234E6
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html; charset="UTF-8"

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html charset=
=3Dutf-8"></head><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div><blockquote t=
ype=3D"cite" class=3D""><div class=3D"">On May 17, 2017, at 6:13 PM, <a hre=
f=3D"mailto:std-proposals@isocpp.org" class=3D"">std-proposals@isocpp.org</=
a> wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><spa=
n style=3D"font-family: arial; font-style: normal; font-variant-caps: norma=
l; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; widows:=
 auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color:=
 rgb(255, 255, 255); color: rgb(177, 176, 176); font-size: 15px;" class=3D"=
">Bengt Gustafsson &lt;<a href=3D"mailto:bengt.gustafsson@beamways.com" cla=
ss=3D"">bengt.gustafsson@beamways.com</a>&gt;: May 16 02:46PM -0700<span cl=
ass=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: rgb=
(46, 46, 46); font-family: arial; font-size: inherit; font-style: normal; f=
ont-variant-caps: normal; font-weight: normal; letter-spacing: normal; orph=
ans: auto; text-align: start; text-indent: 0px; text-transform: none; white=
-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width:=
 0px; background-color: rgb(255, 255, 255); float: none; display: inline !i=
mportant;" class=3D""></span><br style=3D"color: rgb(46, 46, 46); font-fami=
ly: arial; font-style: normal; font-variant-caps: normal; font-weight: norm=
al; letter-spacing: normal; orphans: auto; text-align: start; text-indent: =
0px; text-transform: none; white-space: normal; widows: auto; word-spacing:=
 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);=
" class=3D""><br style=3D"color: rgb(46, 46, 46); font-family: arial; font-=
style: normal; font-variant-caps: normal; font-weight: normal; letter-spaci=
ng: normal; orphans: auto; text-align: start; text-indent: 0px; text-transf=
orm: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-te=
xt-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><sp=
an style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit;=
 font-style: normal; font-variant-caps: normal; font-weight: normal; letter=
-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-=
transform: none; white-space: normal; widows: auto; word-spacing: 0px; -web=
kit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: no=
ne; display: inline !important;" class=3D"">I really do think that the feat=
ure I sketched in my last writing caters for<span class=3D"Apple-converted-=
space">&nbsp;</span></span><span style=3D"color: rgb(46, 46, 46); font-fami=
ly: arial; font-size: inherit; font-style: normal; font-variant-caps: norma=
l; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; widows:=
 auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color:=
 rgb(255, 255, 255); float: none; display: inline !important;" class=3D"">t=
he needs you have identified. I do realize that it uses a quite different<s=
pan class=3D"Apple-converted-space">&nbsp;</span></span><br style=3D"color:=
 rgb(46, 46, 46); font-family: arial; font-style: normal; font-variant-caps=
: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-=
align: start; text-indent: 0px; text-transform: none; white-space: normal; =
widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background=
-color: rgb(255, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 4=
6); font-family: arial; font-size: inherit; font-style: normal; font-varian=
t-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto;=
 text-align: start; text-indent: 0px; text-transform: none; white-space: no=
rmal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; back=
ground-color: rgb(255, 255, 255); float: none; display: inline !important;"=
 class=3D"">method to achieve the goals, and the code examples I showed are=
 just the<span class=3D"Apple-converted-space">&nbsp;</span></span><span st=
yle=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; font=
-style: normal; font-variant-caps: normal; font-weight: normal; letter-spac=
ing: normal; orphans: auto; text-align: start; text-indent: 0px; text-trans=
form: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-t=
ext-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; d=
isplay: inline !important;" class=3D"">kind of =E2=80=9Cwrappers" that you =
(correctly) think will be necessary to get the&nbsp;</span><span style=3D"c=
olor: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: nor=
mal; orphans: auto; text-align: start; text-indent: 0px; text-transform: no=
ne; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stro=
ke-width: 0px; background-color: rgb(255, 255, 255); float: none; display: =
inline !important;" class=3D"">feature used.</span><br style=3D"color: rgb(=
46, 46, 46); font-family: arial; font-style: normal; font-variant-caps: nor=
mal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align=
: start; text-indent: 0px; text-transform: none; white-space: normal; widow=
s: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-colo=
r: rgb(255, 255, 255);" class=3D""><br style=3D"color: rgb(46, 46, 46); fon=
t-family: arial; font-style: normal; font-variant-caps: normal; font-weight=
: normal; letter-spacing: normal; orphans: auto; text-align: start; text-in=
dent: 0px; text-transform: none; white-space: normal; widows: auto; word-sp=
acing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255,=
 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: aria=
l; font-size: inherit; font-style: normal; font-variant-caps: normal; font-=
weight: normal; letter-spacing: normal; orphans: auto; text-align: start; t=
ext-indent: 0px; text-transform: none; white-space: normal; widows: auto; w=
ord-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255=
, 255, 255); float: none; display: inline !important;" class=3D"">I also ho=
pe that my approach corrects the shortcomings regarding lifetime<span class=
=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: rgb(46=
, 46, 46); font-family: arial; font-size: inherit; font-style: normal; font=
-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans=
: auto; text-align: start; text-indent: 0px; text-transform: none; white-sp=
ace: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0p=
x; background-color: rgb(255, 255, 255); float: none; display: inline !impo=
rtant;" class=3D"">management that Nicol and others have pointed out with y=
our approach, and<span class=3D"Apple-converted-space">&nbsp;</span></span>=
<span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inher=
it; font-style: normal; font-variant-caps: normal; font-weight: normal; let=
ter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; te=
xt-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -=
webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float:=
 none; display: inline !important;" class=3D"">which I have not found any m=
eans to correct within the scope of that<span class=3D"Apple-converted-spac=
e">&nbsp;</span></span><span style=3D"color: rgb(46, 46, 46); font-family: =
arial; font-size: inherit; font-style: normal; font-variant-caps: normal; f=
ont-weight: normal; letter-spacing: normal; orphans: auto; text-align: star=
t; text-indent: 0px; text-transform: none; white-space: normal; widows: aut=
o; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb=
(255, 255, 255); float: none; display: inline !important;" class=3D"">appro=
ach. Furthermore I achieve this without having to invent a new type of&nbsp=
;</span><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-siz=
e: inherit; font-style: normal; font-variant-caps: normal; font-weight: nor=
mal; letter-spacing: normal; orphans: auto; text-align: start; text-indent:=
 0px; text-transform: none; white-space: normal; widows: auto; word-spacing=
: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255)=
; float: none; display: inline !important;" class=3D"">=E2=80=9Cstruct decl=
aration" and instead reuse the one we have.</span><br style=3D"color: rgb(4=
6, 46, 46); font-family: arial; font-style: normal; font-variant-caps: norm=
al; font-weight: normal; letter-spacing: normal; orphans: auto; text-align:=
 start; text-indent: 0px; text-transform: none; white-space: normal; widows=
: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color=
: rgb(255, 255, 255);" class=3D""><br style=3D"color: rgb(46, 46, 46); font=
-family: arial; font-style: normal; font-variant-caps: normal; font-weight:=
 normal; letter-spacing: normal; orphans: auto; text-align: start; text-ind=
ent: 0px; text-transform: none; white-space: normal; widows: auto; word-spa=
cing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, =
255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial=
; font-size: inherit; font-style: normal; font-variant-caps: normal; font-w=
eight: normal; letter-spacing: normal; orphans: auto; text-align: start; te=
xt-indent: 0px; text-transform: none; white-space: normal; widows: auto; wo=
rd-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255,=
 255, 255); float: none; display: inline !important;" class=3D"">To complem=
ent the solution for the complete "proxy" case my approach offers<span clas=
s=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: rgb(4=
6, 46, 46); font-family: arial; font-size: inherit; font-style: normal; fon=
t-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphan=
s: auto; text-align: start; text-indent: 0px; text-transform: none; white-s=
pace: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0=
px; background-color: rgb(255, 255, 255); float: none; display: inline !imp=
ortant;" class=3D"">a *light* version if you do have a common base class th=
at the types you<span class=3D"Apple-converted-space">&nbsp;</span></span><=
span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inheri=
t; font-style: normal; font-variant-caps: normal; font-weight: normal; lett=
er-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; tex=
t-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -w=
ebkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: =
none; display: inline !important;" class=3D"">want to type erase inherit fr=
om, this version having no runtime overhead<span class=3D"Apple-converted-s=
pace">&nbsp;</span></span><span style=3D"color: rgb(46, 46, 46); font-famil=
y: arial; font-size: inherit; font-style: normal; font-variant-caps: normal=
; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: s=
tart; text-indent: 0px; text-transform: none; white-space: normal; widows: =
auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: =
rgb(255, 255, 255); float: none; display: inline !important;" class=3D"">wh=
atsoever compared to the underlying storage management (exemplified by<span=
 class=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: =
rgb(46, 46, 46); font-family: arial; font-size: inherit; font-style: normal=
; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; o=
rphans: auto; text-align: start; text-indent: 0px; text-transform: none; wh=
ite-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-wid=
th: 0px; background-color: rgb(255, 255, 255); float: none; display: inline=
 !important;" class=3D"">the shared_ptr or deep_ptr).<span class=3D"Apple-c=
onverted-space">&nbsp;</span></span><br style=3D"color: rgb(46, 46, 46); fo=
nt-family: arial; font-style: normal; font-variant-caps: normal; font-weigh=
t: normal; letter-spacing: normal; orphans: auto; text-align: start; text-i=
ndent: 0px; text-transform: none; white-space: normal; widows: auto; word-s=
pacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255=
, 255);" class=3D""><br style=3D"color: rgb(46, 46, 46); font-family: arial=
; font-style: normal; font-variant-caps: normal; font-weight: normal; lette=
r-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text=
-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -we=
bkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=
=3D""><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size:=
 inherit; font-style: normal; font-variant-caps: normal; font-weight: norma=
l; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0=
px; text-transform: none; white-space: normal; widows: auto; word-spacing: =
0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); =
float: none; display: inline !important;" class=3D"">Maybe I did a pedagogi=
cal mistake in placing the *light* version at the top<span class=3D"Apple-c=
onverted-space">&nbsp;</span></span><span style=3D"color: rgb(46, 46, 46); =
font-family: arial; font-size: inherit; font-style: normal; font-variant-ca=
ps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; tex=
t-align: start; text-indent: 0px; text-transform: none; white-space: normal=
; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; backgrou=
nd-color: rgb(255, 255, 255); float: none; display: inline !important;" cla=
ss=3D"">of the writing, which is why I wrote about the plot twist to keep y=
ou guys<span class=3D"Apple-converted-space">&nbsp;</span></span><span styl=
e=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-s=
tyle: normal; font-variant-caps: normal; font-weight: normal; letter-spacin=
g: normal; orphans: auto; text-align: start; text-indent: 0px; text-transfo=
rm: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; dis=
play: inline !important;" class=3D"">reading. To simplify here is a short f=
orm "gist" of the feature suggested:</span><br style=3D"color: rgb(46, 46, =
46); font-family: arial; font-style: normal; font-variant-caps: normal; fon=
t-weight: normal; letter-spacing: normal; orphans: auto; text-align: start;=
 text-indent: 0px; text-transform: none; white-space: normal; widows: auto;=
 word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(2=
55, 255, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-fami=
ly: arial; font-size: inherit; font-style: normal; font-variant-caps: norma=
l; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: =
start; text-indent: 0px; text-transform: none; white-space: normal; widows:=
 auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color:=
 rgb(255, 255, 255); float: none; display: inline !important;" class=3D"">&=
nbsp;</span><br style=3D"color: rgb(46, 46, 46); font-family: arial; font-s=
tyle: normal; font-variant-caps: normal; font-weight: normal; letter-spacin=
g: normal; orphans: auto; text-align: start; text-indent: 0px; text-transfo=
rm: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><spa=
n style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; =
font-style: normal; font-variant-caps: normal; font-weight: normal; letter-=
spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-t=
ransform: none; white-space: normal; widows: auto; word-spacing: 0px; -webk=
it-text-stroke-width: 0px; background-color: rgb(255, 255, 255); float: non=
e; display: inline !important;" class=3D"">- Indirect inheritance inherits =
functionality from an object whose<span class=3D"Apple-converted-space">&nb=
sp;</span></span><span style=3D"color: rgb(46, 46, 46); font-family: arial;=
 font-size: inherit; font-style: normal; font-variant-caps: normal; font-we=
ight: normal; letter-spacing: normal; orphans: auto; text-align: start; tex=
t-indent: 0px; text-transform: none; white-space: normal; widows: auto; wor=
d-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, =
255, 255); float: none; display: inline !important;" class=3D"">this-pointe=
r is retrieved by calling a method on each use.</span><br style=3D"color: r=
gb(46, 46, 46); font-family: arial; font-style: normal; font-variant-caps: =
normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-al=
ign: start; text-indent: 0px; text-transform: none; white-space: normal; wi=
dows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-c=
olor: rgb(255, 255, 255);" class=3D""><br style=3D"color: rgb(46, 46, 46); =
font-family: arial; font-style: normal; font-variant-caps: normal; font-wei=
ght: normal; letter-spacing: normal; orphans: auto; text-align: start; text=
-indent: 0px; text-transform: none; white-space: normal; widows: auto; word=
-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 2=
55, 255);" class=3D""><span style=3D"color: rgb(46, 46, 46); font-family: a=
rial; font-size: inherit; font-style: normal; font-variant-caps: normal; fo=
nt-weight: normal; letter-spacing: normal; orphans: auto; text-align: start=
; text-indent: 0px; text-transform: none; white-space: normal; widows: auto=
; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(=
255, 255, 255); float: none; display: inline !important;" class=3D"">- Duck=
 typed indirect inheritance augments this functionality by providing<span c=
lass=3D"Apple-converted-space">&nbsp;</span></span><span style=3D"color: rg=
b(46, 46, 46); font-family: arial; font-size: inherit; font-style: normal; =
font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orp=
hans: auto; text-align: start; text-indent: 0px; text-transform: none; whit=
e-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width=
: 0px; background-color: rgb(255, 255, 255); float: none; display: inline !=
important;" class=3D"">a "compliant" type in the ctor's initializer list, w=
hich lets the compiler<span class=3D"Apple-converted-space">&nbsp;</span></=
span><span style=3D"color: rgb(46, 46, 46); font-family: arial; font-size: =
inherit; font-style: normal; font-variant-caps: normal; font-weight: normal=
; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0p=
x; text-transform: none; white-space: normal; widows: auto; word-spacing: 0=
px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); f=
loat: none; display: inline !important;" class=3D"">create the required tra=
nslation table.</span><br style=3D"color: rgb(46, 46, 46); font-family: ari=
al; font-style: normal; font-variant-caps: normal; font-weight: normal; let=
ter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; te=
xt-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -=
webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255);" class=
=3D""><br style=3D"color: rgb(46, 46, 46); font-family: arial; font-style: =
normal; font-variant-caps: normal; font-weight: normal; letter-spacing: nor=
mal; orphans: auto; text-align: start; text-indent: 0px; text-transform: no=
ne; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stro=
ke-width: 0px; background-color: rgb(255, 255, 255);" class=3D""><span styl=
e=3D"color: rgb(46, 46, 46); font-family: arial; font-size: inherit; font-s=
tyle: normal; font-variant-caps: normal; font-weight: normal; letter-spacin=
g: normal; orphans: auto; text-align: start; text-indent: 0px; text-transfo=
rm: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-tex=
t-stroke-width: 0px; background-color: rgb(255, 255, 255); float: none; dis=
play: inline !important;" class=3D"">For more info including rationale and =
examples see the previous post.</span></div></blockquote></div><br class=3D=
""><div class=3D"">Dear Bengt,&nbsp;</div><div class=3D""><br class=3D""></=
div><div class=3D"">&nbsp; &nbsp; &nbsp;Are responding to me or to&nbsp;Min=
gxin Wang, the OP, here? &nbsp;I=E2=80=99m not him. &nbsp;</div><br class=
=3D""><div class=3D"">
<div style=3D"color: rgb(0, 0, 0); letter-spacing: normal; orphans: auto; t=
ext-align: start; text-indent: 0px; text-transform: none; white-space: norm=
al; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; word-w=
rap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-=
space;" class=3D""><div style=3D"color: rgb(0, 0, 0); letter-spacing: norma=
l; orphans: auto; text-align: start; text-indent: 0px; text-transform: none=
; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke=
-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-=
break: after-white-space;" class=3D""><div style=3D"color: rgb(0, 0, 0); le=
tter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; t=
ext-transform: none; white-space: normal; widows: auto; word-spacing: 0px; =
-webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: s=
pace; -webkit-line-break: after-white-space;" class=3D""><div class=3D"">A =
tad confused here,&nbsp;</div><div class=3D"">&nbsp; &nbsp; &nbsp;Bryce Glo=
ver</div><div class=3D"">&nbsp; &nbsp; &nbsp;<a href=3D"mailto:RandomDSdeve=
l@gmail.com" class=3D"">RandomDSdevel@gmail.com</a></div><div class=3D""><b=
r class=3D""></div><div class=3D"">P. S.: &nbsp;At this point, I=E2=80=99ve=
 decided I=E2=80=99m going to duck out of discussions on this topic here an=
d elsewhere. &nbsp;Nobody involved needs a potential novice end-user like m=
yself continuing to ask stupid questions that have probably already been co=
nsidered during such a feature=E2=80=99s design phase, so I=E2=80=99m going=
 back to lurking and waiting for new proposals (I <i class=3D"">do</i>&nbsp=
;read the mailings and papers that might end up in them just to keep up wit=
h what=E2=80=99s happening, after all.) &nbsp;</div></div></div></div></div=
></body></html>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&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/3FFB97B5-FB86-4469-9BBB-FB0CE8905FF5%=
40gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/3FFB97B5-FB86-4469-9BBB-FB0CE8905FF5%=
40gmail.com</a>.<br />

--Apple-Mail=_B0BF6E23-8523-49AA-8701-5D4629C234E6--

.