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&amp;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&amp;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&amp;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&amp;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&amp;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 &lt;<a href=3D"mailto:randomdsdevel@gmail.com" class=
=3D"">randomdsdevel@gmail.com</a>&gt;: 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"">
&nbsp;<br class=3D"">
&nbsp;<br class=3D"">
&gt; 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"">
&nbsp;<br class=3D"">
&gt; Bryce Glover<br class=3D"">
&gt; <a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">RandomDSdevel@gm=
ail.com</a> &lt;<a href=3D"mailto:RandomDSdevel@gmail.com" class=3D"">mailt=
o:RandomDSdevel@gmail.com</a>&gt;<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"">
&nbsp;<br class=3D"">
Apologies, <br class=3D"">&nbsp; &nbsp; &nbsp;Bryce Glover<br class=3D"">&n=
bsp; &nbsp; &nbsp;<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 &lt;<a href=3D"mailto:randomdsdevel@gmail.com" class=
=3D"">randomdsdevel@gmail.com</a>&gt;: Oct 24 08:50PM -0400
        </span>
        <br class=3D""><br class=3D"">
        <br class=3D"">
&gt; =E2=80=A6<br class=3D"">
&nbsp;<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"">
&nbsp;<br class=3D"">
Curious, <br class=3D"">&nbsp; &nbsp; &nbsp;Bryce Glover<br class=3D"">&nbs=
p; &nbsp; &nbsp;<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 &lt;<a href=3D"mailto:klemens.morgenstern@gmx=
..net" class=3D"">klemens.morgenstern@gmx.net</a>&gt;: 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&amp;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"">&nbsp; &nbsp; &nbsp=
;Huh, you=E2=80=99re right: &nbsp;that <i class=3D"">is</i>&nbsp;weird; I=
=E2=80=99ll use the newer subject line in this reply and see if that works,=
 at least for your copy. &nbsp;Anyway,&nbsp;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&nbsp;<a href=3D"=
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/ObjC=
RuntimeGuide/Articles/ocrtHowMessagingWorks.html" class=3D"">here</a>&nbsp;=
 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.) &nbsp;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. &nbsp;</div><div class=3D"">&nbs=
p; &nbsp; &nbsp;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.) &nbsp;All=
 such procedure lookups are cached by the run-time library as needed to spe=
ed program execution along. &nbsp;That, if I remember correctly, is what `o=
bjc_msgSend()` does. &nbsp;Now, you may be asking what all of this has to d=
o with C++ coroutines. &nbsp;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>&nbsp; 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"">&nbsp;from the call stack while it returns.</i>&nbsp;=
 As described in depth starting&nbsp;<a href=3D"http://www.friday.com/bbum/=
2009/12/18/objc_msgsend-part-1-the-road-map/" class=3D"">here</a>&nbsp;(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>&nbsp; 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: &nbsp;one <i class=3D"=
">never</i>&nbsp;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>. &nbsp;</div><div class=3D"">&nbsp; &nbsp; &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>&nbsp=
; 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>&nbsp;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. &nbsp;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. &nbsp;This may not sound very important right =
now, but isn=E2=80=99t the <i class=3D"">entire point</i>&nbsp;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? &nbsp;</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,&nbsp;</div><div class=3D"">&nbsp; &nbsp; &nbsp;Bryce Glove=
r</div><div class=3D"">&nbsp; &nbsp; &nbsp;<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&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"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--

.