Topic: [std-proposals] Re: Another Use Case for Continuati
Author: Bryce Glover <randomdsdevel@gmail.com>
Date: Fri, 30 Oct 2015 17:05:40 -0400
Raw View
--Apple-Mail=_A811BB92-9433-45BE-853F-737B39CCF1E0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
> On Oct 25, 2015, at 6:24 PM, std-proposals@isocpp.org wrote:
>=20
> std-proposals@isocpp.org <https://groups.google.com/a/isocpp.org/forum/?u=
tm_source=3Ddigest&utm_medium=3Demail#!forum/std-proposals/topics> Google G=
roups <https://groups.google.com/a/isocpp.org/forum/?utm_source=3Ddigest&ut=
m_medium=3Demail/#!overview> <https://groups.google.com/a/isocpp.org/forum=
/?utm_source=3Ddigest&utm_medium=3Demail/#!overview> =20
> Topic digest <>
> View all topics <https://groups.google.com/a/isocpp.org/forum/?utm_source=
=3Ddigest&utm_medium=3Demail#!forum/std-proposals/topics>=E2=8B=AE
(nipped)
> =E2=8B=AE
> Register Access for C++ <x-msg://3/#group_thread_2> - 3 Updates
> =E2=8B=AE
(snipped)
> =E2=8B=AE
> Register Access for C++ <http://groups.google.com/a/isocpp.org/group=
/std-proposals/t/311905d3bead7694?utm_source=3Ddigest&utm_medium=3Demail> =
=20
> Bryce Glover <randomdsdevel@gmail.com>: Oct 24 08:25PM -0400=20
>=20
> Whoops, forgot to change my reply=E2=80=99s subject so that it would be r=
ecognized as part of the =E2=80=98Register Access in C++=E2=80=99 thread! L=
et=E2=80=99s try that again, shall we?=20
> =20
> =20
> > Just off-hand, I was, believe it or not, coincidentally thinking about =
this exact topic a while back when I was looking into whether or not adding=
some functionality that is missing from Objective-C++ due to differences b=
etween the object models used by Objective-C and C++ by refactoring Objecti=
ve-C++=E2=80=99s functionality to be a pure superset of that of C++ would b=
e a feasible future project for somebody, maybe me, to undertake.=20
> =20
> > Bryce Glover
> > RandomDSdevel@gmail.com <mailto:RandomDSdevel@gmail.com>
> I have, however, realized that something along the lines of the incoming =
`std::execution_context`, `std::context`, or `std::coroutine` might be a be=
tter solution for my particular use case since posting the above reply.=20
> =20
> Apologies,=20
> Bryce Glover
> RandomDSdevel@gmail.com
> Bryce Glover <randomdsdevel@gmail.com>: Oct 24 08:50PM -0400=20
>=20
>=20
> > =E2=80=A6
> =20
> On that note, have you coroutine guys taken notice that an optimized dyna=
mic-dispatch trampoline akin to Objective-C=E2=80=99s `objc_msgSend()` func=
tion might be another possible use case for execution contexts, continuatio=
ns, and/or coroutines?=20
> =20
> Curious,=20
> Bryce Glover
> RandomDSdevel@gmail.com
> Klemens Morgenstern <klemens.morgenstern@gmx.net>: Oct 25 02:50AM -0700=
=20
>=20
> Setting the topic right doesn't seem to have worked. Could you maybe tell=
=20
> me which part of Objective-C++ you think about, because I have no clue of=
=20
> this language what so ever.
> Back to top <x-msg://3/#digest_top>
> You received this digest because you're subscribed to updates for this gr=
oup. You can change your settings on the group membership page <https://gro=
ups.google.com/a/isocpp.org/forum/?utm_source=3Ddigest&utm_medium=3Demail#!=
forum/std-proposals/join>.
> To unsubscribe from this group and stop receiving emails from it send an =
email to std-proposals+unsubscribe@isocpp.org <mailto:std-proposals+unsubsc=
ribe@isocpp.org>.
Huh, you=E2=80=99re right: that is weird; I=E2=80=99ll use the newer =
subject line in this reply and see if that works, at least for your copy. =
Anyway, to clarify, Objective-C=E2=80=99s (and Objective-C++=E2=80=99s) `ob=
jc_msgSend()` function (declared in this file <https://opensource.apple.com=
/source/objc4/objc4-647/runtime/message.h>,) exists, as described here <htt=
ps://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjCRun=
timeGuide/Articles/ocrtHowMessagingWorks.html> to transform Objective-C=E2=
=80=93style function calls of the form `[receiver message]` where `receiver=
` is an object capable of consuming Objective-C/Objective-C++ messages and =
`message` is an interleaved series of `selector` parts (kind of like argume=
nt names, these allow for explicit name mangling sort of like what=E2=80=99=
s used in typical implementations of C++ function-overloading mechanism) an=
d function arguments into C-style function calls of the form `objc_msgSend(=
receiver, selector, args)` where `receiver` is the same as before, `selecto=
r` is basically just the result of concatenating all of the previously- and=
explicityly-used partial selectors, and `args` is the obvious argument lis=
t (in essence, the selectors and arguments are deinterlaced by the compiler=
prior to any calls it makes into objc_msgSend(), which is, technically, an=
Objective-C/Objective-C++ compiler=E2=80=93 and run-ime=E2=80=93library=E2=
=80=93intrinsic function.) The run-time library that Objective-C and Objec=
tive-C++, not to mention Swift, implements this transformation, which is al=
so explained in the second linked document, by following the receiver=E2=80=
=99s `isa` pointer to a =E2=80=98meta-type=E2=80=99 object which contains p=
ointers to all of the functions that can be called for that receiver=E2=80=
=99s type. =20
If the required function pointer cannot be located based on a receiver=
=E2=80=99s type, then the Objective-C/Objective-C++/Swift run-time library =
will attempt to resolve the method based on its parent types in order (Obje=
ctive-C only allow single, not multiple, inheritance.) All such procedure =
lookups are cached by the run-time library as needed to speed program execu=
tion along. That, if I remember correctly, is what `objc_msgSend()` does. =
Now, you may be asking what all of this has to do with C++ coroutines. We=
ll, it turns out that `objc_msgSend()` is implemented in such a way that it=
has really wonky `return` semantics! The Objective-C family of languages =
bypasses the usual C calling conventions by erasing `objc_msgSend()` from t=
he call stack while it returns. As described in depth starting here <http:=
//www.friday.com/bbum/2009/12/18/objc_msgsend-part-1-the-road-map/> (among =
other places,) it does this through a manual, non-portables, assembly-langu=
age=E2=80=93powered optimization that turns its tail call of the function i=
t just located into a direct call. This is akin to returning a continuatio=
n and setting it up so it automatically resumes itself, and any stack trace=
s you may make of an Objective-C=E2=80=93family program=E2=80=99s execution=
state will bear this out: one never sees `objc_msgSend()`=E2=80=99s state=
left on the stack unless you crashed directly inside of it. =20
If I were ever to write a similar dispatching function in C++ for any =
reason=E2=80=89=E2=80=94=E2=80=89say I wanted to go ahead and take a stab a=
t re-implementing Objective-C++ in order to make it use nothing from C that=
isn=E2=80=99t in the common subset of features shared by both C and C++=E2=
=80=89=E2=80=94, I would, without language support for continuations/corout=
ines/execution contexts/etc., have to either write the required assembly (e=
ither inline in an `asm` block or separately in a different file) myself; w=
rite my own properly-optimized library implementation of execution contexts=
, continuations, and/or coroutines and utilize that, or rely on an external=
defined library such as one provided by Boost. In the first two cases, kn=
owledge of at least some assembly language for at least one platform (which=
I currently don=E2=80=99t have and would, without external support, have t=
o acquire;) in the latter, I have no way whatsoever of knowing whether or n=
ot the required optimizations are present in whatever library I might choos=
e to use without either looking through the documentation or doing some (po=
ssibly extensive) testing. I also have no way of knowing whether anybody w=
ho might end up using my refactored Objective-C++ implementation in the fut=
ure would be fine with me using such a library. This may not sound very im=
portant right now, but isn=E2=80=99t the entire point of C++ (and even, to =
be honest, C) that users shouldn=E2=80=99t have to write assembly code in o=
rder to get higher performance out of their programs? =20
With sore fingers,=20
Bryce Glover
RandomDSdevel@gmail.com
--=20
---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.
--Apple-Mail=_A811BB92-9433-45BE-853F-737B39CCF1E0
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 Oct 25, 2015, at 6:24 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"">
<div style=3D"border: 1px solid rgb(211, 211, 211); max-width: 850px; font-=
family: Arial, sans-serif;" class=3D"">
<div style=3D"background-color:#f5f5f5;padding:10px 20px" class=3D"">
<table cellpadding=3D"0" cellspacing=3D"0" style=3D"width:100%" class=
=3D"">
<tbody class=3D"">
<tr class=3D"">
<td style=3D"width:70%" class=3D"">
<span style=3D"font:18px/20px arial;color:#333333" class=3D"">
<a href=3D"https://groups.google.com/a/isocpp.org/forum/?utm_=
source=3Ddigest&utm_medium=3Demail#!forum/std-proposals/topics" style=
=3D"text-decoration:none; color:#333333" class=3D"">
std-proposals@isocpp.org</a>
</span>
</td>
<td style=3D"text-align:right;width:30%" class=3D"">
<span style=3D"font:20px/24px arial" class=3D""><a style=3D"col=
or:#dd4b39; text-decoration:none;" href=3D"https://groups.google.com/a/isoc=
pp.org/forum/?utm_source=3Ddigest&utm_medium=3Demail/#!overview" target=
=3D"_blank" class=3D"">Google Groups</a></span>
</td>
<td style=3D"width:32px;" class=3D"">
<a href=3D"https://groups.google.com/a/isocpp.org/forum/?utm_so=
urce=3Ddigest&utm_medium=3Demail/#!overview" target=3D"_blank" class=3D=
""><img style=3D"border:0;vertical-align:middle" src=3D"http://www.google.c=
om/images/icons/product/groups-32.png" class=3D""></a>
</td>
</tr>
</tbody>
</table>
</div>
<div style=3D"padding:20px; background-color: #f5f5f5;" class=3D"">
<div style=3D"font-family: arial; color: #222222; padding: 0px" class=3D"">
<a name=3D"digest_top" style=3D"font-size:21px;" class=3D"">
=20
=20
Topic digest
=20
</a><br class=3D"">
<span style=3D"font-size:11px" class=3D"">
<a style=3D"color:#1155cc;text-decoration:none" href=3D"https://groups.=
google.com/a/isocpp.org/forum/?utm_source=3Ddigest&utm_medium=3Demail#!=
forum/std-proposals/topics" class=3D"">View all topics</a></span></div></di=
v></div></div></blockquote><div><blockquote type=3D"cite" class=3D"">=E2=8B=
=AE</blockquote></div><div><br class=3D""></div>(nipped)</div><div><br clas=
s=3D""></div><div><blockquote type=3D"cite" class=3D"">=E2=8B=AE</blockquot=
e><blockquote type=3D"cite" class=3D""><div style=3D"border: 1px solid rgb(=
211, 211, 211); max-width: 850px; font-family: Arial, sans-serif;" class=3D=
""><div style=3D"padding:20px; background-color: #f5f5f5;" class=3D""><div =
style=3D"font: 13px/18px arial; color:#222222; padding: 0px; margin-bottom:=
30px" class=3D""><ul style=3D"margin-left:3px; padding-left:0px" class=3D""=
>
=20
<li class=3D"">
<a style=3D"color:#1155cc;text-decoration:none" href=3D"x-msg://3/#gr=
oup_thread_2" class=3D"">
Register Access for C++</a> -
<span style=3D"color:#777777" class=3D"">3 Updates</span></li></ul></=
div></div></div></blockquote><div><blockquote type=3D"cite" class=3D"">=E2=
=8B=AE</blockquote></div><div><br class=3D""></div>(snipped)</div><div><br =
class=3D""></div><div><blockquote type=3D"cite" class=3D"">=E2=8B=AE</block=
quote><blockquote type=3D"cite" class=3D""><div class=3D""><div style=3D"bo=
rder: 1px solid rgb(211, 211, 211); max-width: 850px; font-family: Arial, s=
ans-serif;" class=3D""><div style=3D"padding:20px; background-color: #f5f5f=
5;" class=3D""><div style=3D"display:inline-block; font-family: arial; padd=
ing: 4px 0 5px 0px;" class=3D""><a target=3D"_blank" href=3D"http://groups.=
google.com/a/isocpp.org/group/std-proposals/t/311905d3bead7694?utm_source=
=3Ddigest&utm_medium=3Demail" style=3D"font-size:21px; color:#1155CC; t=
ext-decoration:none" class=3D"">Register Access for C++
</a>
=20
</div>
<table style=3D"border-collapse: collapse; width: 100%" class=3D"">
=20
<tbody class=3D""><tr class=3D""><td style=3D"background-color: #FFFF=
FF; color:#2E2E2E; font-family: arial; padding:10px 15px; border:1px solid =
#d3d3d3;" class=3D"">
<span style=3D"color:#B1B0B0; font-size: 15px;" class=3D"">
Bryce Glover <<a href=3D"mailto:randomdsdevel@gmail.com" class=
=3D"">randomdsdevel@gmail.com</a>>: Oct 24 08:25PM -0400
</span>
<br class=3D""><br class=3D"">
Whoops, forgot to change my reply=E2=80=99s subject so that it woul=
d be recognized as part of the =E2=80=98Register Access in C++=E2=80=99 thr=
ead! Let=E2=80=99s try that again, shall we? <br class=3D"">
<br class=3D"">
<br class=3D"">
> Just off-hand, I was, believe it or not, coincidentally thinking about=
this exact topic a while back when I was looking into whether or not addin=
g some functionality that is missing from Objective-C++ due to differences =
between the object models used by Objective-C and C++ by refactoring Object=
ive-C++=E2=80=99s functionality to be a pure superset of that of C++ would =
be a feasible future project for somebody, maybe me, to undertake. <br cla=
ss=3D"">
<br class=3D"">
> Bryce Glover<br class=3D"">
> <a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">RandomDSdevel@gm=
ail.com</a> <<a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">mailt=
o:RandomDSdevel@gmail.com</a>><br class=3D"">
I have, however, realized that something along the lines of the incoming `s=
td::execution_context`, `std::context`, or `std::coroutine` might be a bett=
er solution for my particular use case since posting the above reply. <br =
class=3D"">
<br class=3D"">
Apologies, <br class=3D""> Bryce Glover<br class=3D"">&n=
bsp; <a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">Ran=
domDSdevel@gmail.com</a><br class=3D"">
</td></tr>
=20
<tr class=3D""><td style=3D"background-color: #FFFFFF; color:#2E2E2E;=
font-family: arial; padding:10px 15px; border:1px solid #d3d3d3;" class=3D=
"">
<span style=3D"color:#B1B0B0; font-size: 15px;" class=3D"">
Bryce Glover <<a href=3D"mailto:randomdsdevel@gmail.com" class=
=3D"">randomdsdevel@gmail.com</a>>: Oct 24 08:50PM -0400
</span>
<br class=3D""><br class=3D"">
<br class=3D"">
> =E2=80=A6<br class=3D"">
<br class=3D"">
On that note, have you coroutine guys taken notice that an optimized d=
ynamic-dispatch trampoline akin to Objective-C=E2=80=99s `objc_msgSend()` f=
unction might be another possible use case for execution contexts, continua=
tions, and/or coroutines? <br class=3D"">
<br class=3D"">
Curious, <br class=3D""> Bryce Glover<br class=3D"">&nbs=
p; <a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">Rando=
mDSdevel@gmail.com</a><br class=3D"">
</td></tr>
=20
<tr class=3D""><td style=3D"background-color: #FFFFFF; color:#2E2E2E;=
font-family: arial; padding:10px 15px; border:1px solid #d3d3d3;" class=3D=
"">
<span style=3D"color:#B1B0B0; font-size: 15px;" class=3D"">
Klemens Morgenstern <<a href=3D"mailto:klemens.morgenstern@gmx=
..net" class=3D"">klemens.morgenstern@gmx.net</a>>: Oct 25 02:50AM -0700
</span>
<br class=3D""><br class=3D"">
Setting the topic right doesn't seem to have worked. Could you mayb=
e tell <br class=3D"">
me which part of Objective-C++ you think about, because I have no clue of <=
br class=3D"">
this language what so ever.<br class=3D"">
</td></tr>
=20
</tbody></table>
<div style=3D"align:right; font-size:11px; margin-bottom: 40px; margin-to=
p:5px;" class=3D"">
<a style=3D"color:#1155cc;text-decoration:none" href=3D"x-msg://3/#dige=
st_top" class=3D"">Back to top</a>
</div>
</div>
<div style=3D"background-color: #f5f5f5;padding: 5px 20px;" class=3D"">
<table cellpadding=3D"0" cellspacing=3D"0" style=3D"width:100%" class=3D"=
">
<tbody class=3D""><tr class=3D"">
<td style=3D"padding-top:4px;font-family:arial,sans-serif;color:#636363=
;font-size:11px" class=3D"">
=20
You received this digest because you're subscribed to updates for thi=
s group. You can change your settings on the <a href=3D"https://groups.goog=
le.com/a/isocpp.org/forum/?utm_source=3Ddigest&utm_medium=3Demail#!foru=
m/std-proposals/join" style=3D"color:#1155cc;text-decoration:none" class=3D=
"">group membership page</a>.<br class=3D"">
To unsubscribe from this group and stop receiving emails from it send=
an email to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" class=
=3D"">std-proposals+unsubscribe@isocpp.org</a>.
</td>
</tr></tbody>
</table>
</div>
</div>
</div></blockquote></div><br class=3D""><div class=3D"">  =
;Huh, you=E2=80=99re right: that <i class=3D"">is</i> weird; I=
=E2=80=99ll use the newer subject line in this reply and see if that works,=
at least for your copy. Anyway, to clarify, Objective-C=E2=80=
=99s (and Objective-C++=E2=80=99s) `objc_msgSend()` function (declared in&n=
bsp;<a href=3D"https://opensource.apple.com/source/objc4/objc4-647/runtime/=
message.h" class=3D"">this file</a>,) exists, as described <a href=3D"=
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjC=
RuntimeGuide/Articles/ocrtHowMessagingWorks.html" class=3D"">here</a> =
to transform Objective-C=E2=80=93style function calls of the form `[receiv=
er message]` where `receiver` is an object capable of consuming Objective-C=
/Objective-C++ messages and `message` is an interleaved series of `selector=
` parts (kind of like argument names, these allow for explicit name manglin=
g sort of like what=E2=80=99s used in typical implementations of C++ functi=
on-overloading mechanism) and function arguments into C-style function call=
s of the form `objc_msgSend(receiver, selector, args)` where `receiver` is =
the same as before, `selector` is basically just the result of concatenatin=
g all of the previously- and explicityly-used partial selectors, and `args`=
is the obvious argument list (in essence, the selectors and arguments are =
deinterlaced by the compiler prior to any calls it makes into objc_msgSend(=
), which is, technically, an Objective-C/Objective-C++ compiler=E2=80=93 an=
d run-ime=E2=80=93library=E2=80=93intrinsic function.) The run-time l=
ibrary that Objective-C and Objective-C++, not to mention Swift, implements=
this transformation, which is also explained in the second linked document=
, by following the receiver=E2=80=99s `isa` pointer to a =E2=80=98meta-type=
=E2=80=99 object which contains pointers to all of the functions that can b=
e called for that receiver=E2=80=99s type. </div><div class=3D"">&nbs=
p; If the required function pointer cannot be located based on=
a receiver=E2=80=99s type, then the Objective-C/Objective-C++/Swift run-ti=
me library will attempt to resolve the method based on its parent types in =
order (Objective-C only allow single, not multiple, inheritance.) All=
such procedure lookups are cached by the run-time library as needed to spe=
ed program execution along. That, if I remember correctly, is what `o=
bjc_msgSend()` does. Now, you may be asking what all of this has to d=
o with C++ coroutines. Well, it turns out that `objc_msgSend()` is im=
plemented in such a way that it has <i class=3D"">really wonky </i>`return`=
<i class=3D"">semantics!</i> The Objective-C family of languages byp=
asses the usual C calling conventions by <i class=3D"">erasing </i>`objc_ms=
gSend()`<i class=3D""> from the call stack while it returns.</i> =
As described in depth starting <a href=3D"http://www.friday.com/bbum/=
2009/12/18/objc_msgsend-part-1-the-road-map/" class=3D"">here</a> (amo=
ng other places,) it does this through a manual, non-portables, assembly-la=
nguage=E2=80=93powered optimization that turns its tail call of the functio=
n it just located into a <i class=3D"">direct call.</i> This is akin =
to returning a continuation and setting it up so it automatically resumes i=
tself, and any stack traces you may make of an Objective-C=E2=80=93family p=
rogram=E2=80=99s execution state will bear this out: one <i class=3D"=
">never</i> sees `objc_msgSend()`=E2=80=99s state left on the stack <i=
class=3D"">unless you crashed </i><i style=3D"font-weight: bold;" class=3D=
"">directly inside of it</i>. </div><div class=3D""> &nb=
sp;If I were ever to write a similar dispatching function in C++ for any re=
ason=E2=80=89=E2=80=94=E2=80=89say I wanted to go ahead and take a stab at =
re-implementing Objective-C++ in order to make it use nothing from C that i=
sn=E2=80=99t in the common subset of features shared by both C and C++=E2=
=80=89=E2=80=94, I would, without language support for continuations/corout=
ines/execution contexts/etc., have to either write the required assembly (e=
ither inline in an `asm` block or separately in a different file) myself;&n=
bsp;write my own properly-optimized library implementation of execution con=
texts, continuations, and/or coroutines and utilize that, or rely on an ext=
ernal defined library such as one provided by Boost<i class=3D"">.</i> =
; In the first two cases, knowledge of at least some assembly language for =
at least one platform (which I currently don=E2=80=99t have and would, with=
out external support, have to acquire;) in the latter, I have no way <i cla=
ss=3D"">whatsoever</i> of knowing whether or not the required optimiza=
tions are present in whatever library I might choose to use without either =
looking through the documentation or doing some (possibly extensive) testin=
g. I also have no way of knowing whether anybody who might end up usi=
ng my refactored Objective-C++ implementation in the future would be fine w=
ith me using such a library. This may not sound very important right =
now, but isn=E2=80=99t the <i class=3D"">entire point</i> of C++ (and =
even, to be honest, C) that users shouldn=E2=80=99t <i class=3D"">have</i>&=
nbsp;to write assembly code in order to get higher performance out of their=
programs? </div><div class=3D""><br class=3D"webkit-block-placeholde=
r"></div><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"">Wi=
th sore fingers, </div><div class=3D""> Bryce Glove=
r</div><div class=3D""> <a href=3D"mailto:RandomDSdevel@=
gmail.com" class=3D"">RandomDSdevel@gmail.com</a></div></div></div></div></=
div></body></html>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
--Apple-Mail=_A811BB92-9433-45BE-853F-737B39CCF1E0--
.