220 19930 <CADbh+eRAv5fJRZPukrArLjV9LXPkuL3_U+bXf-RBCWVkWkm=6w@mail.gmail.com> article
Path: news.gmane.org!not-for-mail
From: Brent Friedman <fourthgeek@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: default arguments
Date: Wed, 19 Aug 2015 13:13:55 -0500
Lines: 356
Approved: news@gmane.org
Message-ID: <CADbh+eRAv5fJRZPukrArLjV9LXPkuL3_U+bXf-RBCWVkWkm=6w@mail.gmail.com>
References: <ef9c7cbe-e8f1-4196-83bc-11a1c9b2798c@isocpp.org>
	<CANh8DEnn-PWZRNUvqhjcaJpiZk+6hyxVpy5qQXgTUw-uMhdh1A@mail.gmail.com>
	<ccf43684-c479-420e-a6b2-5a23673f7c5a@isocpp.org>
	<89bf9d09-00ed-45db-bf88-39c844707bd1@isocpp.org>
	<b003ffb3-2f0b-4c41-8db0-0a57743e5d93@isocpp.org>
	<CAD6_Qj9xzNThT7wX+LN-Rqe7CNys7s4jr==gzRoirOxCWefGwQ@mail.gmail.com>
	<87b15f40-b36a-47bd-b822-8df53dd72287@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: plane.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=94eb2c0912546d21f2051dadfff8
X-Trace: ger.gmane.org 1440008045 14204 80.91.229.3 (19 Aug 2015 18:14:05 GMT)
X-Complaints-To: usenet@ger.gmane.org
NNTP-Posting-Date: Wed, 19 Aug 2015 18:14:05 +0000 (UTC)
To: std-proposals@isocpp.org
Original-X-From: std-proposals+bncBCHLPXGUXMJBBY4O2OXAKGQEUMIGFLY@isocpp.org Wed Aug 19 20:14:02 2015
Return-path: <std-proposals+bncBCHLPXGUXMJBBY4O2OXAKGQEUMIGFLY@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-vk0-f72.google.com ([209.85.213.72])
	by plane.gmane.org with esmtp (Exim 4.69)
	(envelope-from <std-proposals+bncBCHLPXGUXMJBBY4O2OXAKGQEUMIGFLY@isocpp.org>)
	id 1ZS7s5-0001Dw-Jp
	for gclcip-std-proposals@m.gmane.org; Wed, 19 Aug 2015 20:13:57 +0200
Original-Received: by vkd66 with SMTP id 66sf11235150vkd.3
        for <gclcip-std-proposals@m.gmane.org>; Wed, 19 Aug 2015 11:13:56 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20130820;
        h=x-gm-message-state:mime-version:in-reply-to:references:date
         :message-id:subject:from:to:content-type:x-original-sender
         :x-original-authentication-results:reply-to:precedence:mailing-list
         :list-id:x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=qhIZbW75PcmUdytxNoIp9yeFKMSOlh73nNOeJbakxpY=;
        b=Lcbe++v46K0kLvth9ZzdYIhyY2eCJiFELvydWaH8KdTQzuEbud3YAXDfp1oN0Vtdtx
         Qj16EqeJLYhpWInZqem7dLtssNIVarqcij1MKBpz02ctuucww01/3dujl09R/NDqudLX
         Zrx1Bjc9UEIiurdT6H07tOu1+48sPoAUHO0RUODyNvoGQSRnBqwtN2w6rhzPUOtCHGOT
         5ii0lM/IVaz/vfCu/hRgkXUbtlxzsop3HuGQbgWCI1U5PO7WUSzEpp0A4YBFRYZKhPyU
         bLeq5yPTwM0T3tbNgYsQAptdVgIYl8mYBsclZFzNv1RFzS/l2mdOXyDCmUFeh0LSyxqb
         IYOA==
X-Gm-Message-State: ALoCoQnoQnMqIwAtBybDpi9wjEvCBUKXoT973R3eSFyAAHQtv3Q1GqkUVDH4TCrOfsjV3blgee8i
X-Received: by 10.13.231.133 with SMTP id q127mr11745256ywe.31.1440008036360;
        Wed, 19 Aug 2015 11:13:56 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.182.29.41 with SMTP id g9ls84345obh.89.gmail; Wed, 19 Aug 2015
 11:13:55 -0700 (PDT)
X-Received: by 10.202.44.195 with SMTP id s186mr11350467ois.53.1440008035582;
        Wed, 19 Aug 2015 11:13:55 -0700 (PDT)
Original-Received: from mail-oi0-x235.google.com (mail-oi0-x235.google.com. [2607:f8b0:4003:c06::235])
        by mx.google.com with ESMTPS id pz7si23211oec.44.2015.08.19.11.13.55
        for <std-proposals@isocpp.org>
        (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Wed, 19 Aug 2015 11:13:55 -0700 (PDT)
Received-SPF: pass (google.com: domain of fourthgeek@gmail.com designates 2607:f8b0:4003:c06::235 as permitted sender) client-ip=2607:f8b0:4003:c06::235;
Original-Received: by oiew67 with SMTP id w67so8175897oie.2
        for <std-proposals@isocpp.org>; Wed, 19 Aug 2015 11:13:55 -0700 (PDT)
X-Received: by 10.202.239.138 with SMTP id n132mr10467970oih.99.1440008035441;
 Wed, 19 Aug 2015 11:13:55 -0700 (PDT)
Original-Received: by 10.202.128.17 with HTTP; Wed, 19 Aug 2015 11:13:55 -0700 (PDT)
In-Reply-To: <87b15f40-b36a-47bd-b822-8df53dd72287@isocpp.org>
X-Original-Sender: fourthgeek@gmail.com
X-Original-Authentication-Results: mx.google.com;       spf=pass (google.com:
 domain of fourthgeek@gmail.com designates 2607:f8b0:4003:c06::235 as
 permitted sender) smtp.mailfrom=fourthgeek@gmail.com;       dkim=pass
 header.i=@gmail.com;       dmarc=pass (p=NONE dis=NONE) header.from=gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Spam-Checked-In-Group: std-proposals@isocpp.org
X-Google-Group-Id: 399137483710
List-Post: <http://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <http://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <http://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>,
 <mailto:std-proposals+subscribe@isocpp.org>
List-Unsubscribe: <mailto:googlegroups-manage+399137483710+unsubscribe@googlegroups.com>,
 <http://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:19930
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/19930>

--94eb2c0912546d21f2051dadfff8
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Arthur, please refrain from implying that someone needs to go back to
elementary school based on your personal interpretation of something that
someone else said. Also, if you know of an elementary school that teaches
C++ then I'd love to hear about it.

The notion that every single class ever needs to have strict encapsulation
for every single data member is fairly ridiculous in my opinion.
Encapsulation is a tool used to achieve certain software engineering goals
and it can be misused like any other tool.


On Wed, Aug 19, 2015 at 1:07 PM, Arthur Tchaikovsky <atch.cpp@gmail.com>
wrote:

> Not all members in struct are public. From elementary school, everyone
> knows that struct differs from class that *by default* members are public
> in struct and private in class. ;)
> That's why I see it as a violation of encapsulation. Secondly, not only
> structs should be concerned, but classes too. And not only initialization
> should be a concern here but also setting value *after* the object had be=
en
> initialized. Taken all this above, I say that accessing members of a
> class/struct by names, be it during initialization or after that fact is
> violation of encapsulation and it should be discouraged in modern C++. Th=
is
> kind of code may very well be OK for C but C++ is not C.
>
> On Wednesday, 19 August 2015 18:50:13 UTC+1, David Rodr=C3=ADguez Ibeas w=
rote:
>>
>> How does that violate an encapsulation that does not exist? All members
>> are public in the struct=E2=80=A6 you might dislike it on different acco=
unts but
>> encapsulation is not an issue with that code.  Other pro=C2=B4s, the arg=
uments
>> are named, which is stable across refactors that might shift the positio=
ns
>> (assuming sensible names, the caller wants the 'a' to have value X or th=
e
>> 'b' to have value Z. Depending on the position of the member in the stru=
ct
>> (and passing 'default' if needed for the previous arguments) is *more*
>> coupled, not less coupled.
>>
>> For initialization of structs, the C way is clearly better than the C++
>> way here. A different question is whether we want to put some effort int=
o
>> that part of the language when we can assume that most types are not
>> all-members-public.
>>
>> Then again this is only related to default arguments to functions in tha=
t
>> uniform initialization would be even less uniform in certain cases.  I d=
o
>> see the problems with named arguments, I still think that to be the bett=
er
>> way. Whether initialization of structs can be made compatible with C onc=
e
>> again=E2=80=A6 would be nice here, but I imagine not that many people ca=
re.
>>
>>      David
>>
>> On Wed, Aug 19, 2015 at 5:27 PM, Arthur Tchaikovsky <atch...@gmail.com>
>> wrote:
>>
>>> It *is not* simpler. What you've just shown is a violation of
>>> encapsulation. Not simplification.
>>>
>>>
>>> On Wednesday, 19 August 2015 16:08:52 UTC+1, S.B. wrote:
>>>>
>>>> It's even simpler if we could write
>>>>
>>>> struct s {
>>>>     int a =3D 1337;
>>>>     int b =3D 4096;
>>>> };
>>>>
>>>> int main() {
>>>>     s x;
>>>>     s y { 42 }; // or s y { .a =3D 42 };
>>>>     s z { .b =3D 42 };
>>>>     return 0;
>>>> }
>>>>
>>>> :)
>>>>
>>>> On Wednesday, August 19, 2015 at 2:02:01 PM UTC+8, Max Truxa wrote:
>>>>>
>>>>> I have to agree with Matt Calabrese completely. As it was already
>>>>> asserted named arguments are not going to happen anytime soon (if at =
all).
>>>>>
>>>>> Earlier in this thread there were workarounds listed which are more o=
r
>>>>> less comparable to the proposal in their effect.
>>>>> I would like to elaborate some more on one of these workarounds, as i=
t
>>>>> can be mapped pretty much 1-to-1 to the proposal and it happens to be=
 the
>>>>> solution I employ when encountering this kind of problem.
>>>>>
>>>>>
>>>>> # Current workaround.
>>>>>
>>>>> struct s {
>>>>>     static int const default_a =3D 1337;
>>>>>     static int const default_b =3D 4096;
>>>>>     s(int a =3D default_a, int b =3D default_b)
>>>>>         : a(a), b(b) { }
>>>>>     int a;
>>>>>     int b;
>>>>> };
>>>>>
>>>>> int main() {
>>>>>     s x;
>>>>>     s y(42);
>>>>>     s z(s::default_a, 42);
>>>>>     return 0;
>>>>> }
>>>>>
>>>>> See working code here: http://ideone.com/OKtbuc
>>>>>
>>>>>
>>>>> # Using the proposed syntax.
>>>>>
>>>>> struct s {
>>>>>     s(int a =3D 1337, int b =3D 4096)
>>>>>         : a(a), b(b) { }
>>>>>     int a;
>>>>>     int b;
>>>>> };
>>>>>
>>>>> int main() {
>>>>>     s x;
>>>>>     s y(42);
>>>>>     s z(default, 42);
>>>>>     return 0;
>>>>> }
>>>>>
>>>>> The current solution has a number of drawbacks.
>>>>> 1) It's unnecessarily verbose.
>>>>> 2) It's easy to mess up for parameters that have the same type. (`s
>>>>> z(s::default_b, 42)` - Oops, passed `default_b` as `a`.)
>>>>> 3) When looking up the actual default values there is one more hop to
>>>>> make. It's not sufficient to look at the function declaration but
>>>>> additionally we have to look for e.g. default_a.
>>>>>
>>>>> --
>>>
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "ISO C++ Standard - Future Proposals" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to std-proposal...@isocpp.org.
>>> To post to this group, send email to std-pr...@isocpp.org.
>>> Visit this group at
>>> http://groups.google.com/a/isocpp.org/group/std-proposals/.
>>>
>>
>> --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "ISO C++ Standard - Future Proposals" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to std-proposals+unsubscribe@isocpp.org.
> To post to this group, send email to std-proposals@isocpp.org.
> Visit this group at
> http://groups.google.com/a/isocpp.org/group/std-proposals/.
>

--=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/.

--94eb2c0912546d21f2051dadfff8
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Arthur, please refrain from implying that someone needs to=
 go back to elementary school based on your personal interpretation of some=
thing that someone else said. Also, if you know of an elementary school tha=
t teaches C++ then I&#39;d love to hear about it.<div><br></div><div>The no=
tion that every single class ever needs to have strict encapsulation for ev=
ery single data member is fairly ridiculous in my opinion. Encapsulation is=
 a tool used to achieve certain software engineering goals and it can be mi=
sused like any other tool.<div><br></div></div></div><div class=3D"gmail_ex=
tra"><br><div class=3D"gmail_quote">On Wed, Aug 19, 2015 at 1:07 PM, Arthur=
 Tchaikovsky <span dir=3D"ltr">&lt;<a href=3D"mailto:atch.cpp@gmail.com" ta=
rget=3D"_blank">atch.cpp@gmail.com</a>&gt;</span> wrote:<br><blockquote cla=
ss=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pa=
dding-left:1ex"><div dir=3D"ltr">Not all members in struct are public. From=
 elementary school, everyone knows that struct differs from class that *by =
default* members are public in struct and private in class. ;)<br>That&#39;=
s why I see it as a violation of encapsulation. Secondly, not only structs =
should be concerned, but classes too. And not only initialization should be=
 a concern here but also setting value *after* the object had been initiali=
zed. Taken all this above, I say that accessing members of a class/struct b=
y names, be it during initialization or after that fact is violation of enc=
apsulation and it should be discouraged in modern C++. This kind of code ma=
y very well be OK for C but C++ is not C. <br><span class=3D""><br>On Wedne=
sday, 19 August 2015 18:50:13 UTC+1, David Rodr=C3=ADguez Ibeas  wrote:</sp=
an><blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;bo=
rder-left:1px #ccc solid;padding-left:1ex"><span class=3D""><div dir=3D"ltr=
">How does that violate an encapsulation that does not exist? All members a=
re public in the struct=E2=80=A6 you might dislike it on different accounts=
 but encapsulation is not an issue with that code.=C2=A0 Other pro=C2=B4s, =
the arguments are named, which is stable across refactors that might shift =
the positions (assuming sensible names, the caller wants the &#39;a&#39; to=
 have value X or the &#39;b&#39; to have value Z. Depending on the position=
 of the member in the struct (and passing &#39;default&#39; if needed for t=
he previous arguments) is *more* coupled, not less coupled.<div><br></div><=
div>For initialization of structs, the C way is clearly better than the C++=
 way here. A different question is whether we want to put some effort into =
that part of the language when we can assume that most types are not all-me=
mbers-public.=C2=A0</div><div><br></div><div>Then again this is only relate=
d to default arguments to functions in that uniform initialization would be=
 even less uniform in certain cases.=C2=A0 I do see the problems with named=
 arguments, I still think that to be the better way. Whether initialization=
 of structs can be made compatible with C once again=E2=80=A6 would be nice=
 here, but I imagine not that many people care.</div><div><br></div><div>=
=C2=A0 =C2=A0 =C2=A0David</div></div></span><div><br><div class=3D"gmail_qu=
ote"><div><div class=3D"h5">On Wed, Aug 19, 2015 at 5:27 PM, Arthur Tchaiko=
vsky <span dir=3D"ltr">&lt;<a rel=3D"nofollow">atch...@gmail.com</a>&gt;</s=
pan> wrote:<br></div></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class=
=3D"h5"><div dir=3D"ltr">It *is not* simpler. What you&#39;ve just shown is=
 a violation of encapsulation. Not simplification.<div><div><br><br>On Wedn=
esday, 19 August 2015 16:08:52 UTC+1, S.B.  wrote:<blockquote class=3D"gmai=
l_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;pad=
ding-left:1ex"><div dir=3D"ltr">It&#39;s even simpler if we could write <br=
><br><div style=3D"background-color:rgb(250,250,250);border-color:rgb(187,1=
87,187);border-style:solid;border-width:1px;word-wrap:break-word"><code><di=
v><span style=3D"color:#008">struct</span><span style=3D"color:#000"> s </s=
pan><span style=3D"color:#660">{</span><span style=3D"color:#000"><br>=C2=
=A0 =C2=A0 </span><span style=3D"color:#008">int</span><span style=3D"color=
:#000"> a </span><span style=3D"color:#660">=3D</span><span style=3D"color:=
#000"> </span><span style=3D"color:#066">1337</span><span style=3D"color:#6=
60">;</span><span style=3D"color:#000"><br>=C2=A0 =C2=A0 </span><span style=
=3D"color:#008">int</span><span style=3D"color:#000"> b </span><span style=
=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><span style=3D=
"color:#066">4096</span><span style=3D"color:#660">;</span><span style=3D"c=
olor:#000"><br></span><span style=3D"color:#660">};</span><span style=3D"co=
lor:#000"><br>=C2=A0<br></span><span style=3D"color:#008">int</span><span s=
tyle=3D"color:#000"> main</span><span style=3D"color:#660">()</span><span s=
tyle=3D"color:#000"> </span><span style=3D"color:#660">{</span><span style=
=3D"color:#000"><br>=C2=A0 =C2=A0 s x</span><span style=3D"color:#660">;</s=
pan><span style=3D"color:#000"><br>=C2=A0 =C2=A0 s y </span><span style=3D"=
color:#660">{</span><span style=3D"color:#000"> </span><span style=3D"color=
:#066">42</span><span style=3D"color:#000"> </span><span style=3D"color:#66=
0">};</span><span style=3D"color:#000"> </span><span style=3D"color:#800">/=
/ or s y { .a =3D 42 };</span><span style=3D"color:#000"><br>=C2=A0 =C2=A0 =
s z </span><span style=3D"color:#660">{</span><span style=3D"color:#000"> <=
/span><span style=3D"color:#660">.</span><span style=3D"color:#000">b </spa=
n><span style=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><=
span style=3D"color:#066">42</span><span style=3D"color:#000"> </span><span=
 style=3D"color:#660">};</span><span style=3D"color:#000"><br>=C2=A0 =C2=A0=
 </span><span style=3D"color:#008">return</span><span style=3D"color:#000">=
 </span><span style=3D"color:#066">0</span><span style=3D"color:#660">;</sp=
an><span style=3D"color:#000"><br></span><span style=3D"color:#660">}</span=
></div></code></div><br>:)<br><br>On Wednesday, August 19, 2015 at 2:02:01 =
PM UTC+8, Max Truxa wrote:<blockquote class=3D"gmail_quote" style=3D"margin=
:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex">I have to=
 agree with Matt Calabrese completely. As it was already asserted named arg=
uments are not going to happen anytime soon (if at all).<p>Earlier in this =
thread there were workarounds listed which are more or less comparable to t=
he proposal in their effect.<br>I would like to elaborate some more on one =
of these workarounds, as it can be mapped pretty much 1-to-1 to the proposa=
l and it happens to be the solution I employ when encountering this kind of=
 problem.</p><p><br># Current workaround.</p><p>struct s {<br>=C2=A0 =C2=A0=
 static int const default_a =3D 1337;<br>=C2=A0 =C2=A0 static int const def=
ault_b =3D 4096;<br>=C2=A0 =C2=A0 s(int a =3D default_a, int b =3D default_=
b) <br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 : a(a), b(b) { }<br>=C2=A0 =C2=A0 int a;=
<br>=C2=A0 =C2=A0 int b;<br>};<br>=C2=A0<br>int main() {<br>=C2=A0 =C2=A0 s=
 x;<br>=C2=A0 =C2=A0 s y(42);<br>=C2=A0 =C2=A0 s z(s::default_a, 42);<br>=
=C2=A0 =C2=A0 return 0;<br>}</p><p>See working code here: <a href=3D"http:/=
/ideone.com/OKtbuc" rel=3D"nofollow" target=3D"_blank">http://ideone.com/OK=
tbuc</a></p><p><br># Using the proposed syntax.</p><p>struct s {<br>=C2=A0 =
=C2=A0 s(int a =3D 1337, int b =3D 4096) <br>=C2=A0 =C2=A0 =C2=A0 =C2=A0 : =
a(a), b(b) { }<br>=C2=A0 =C2=A0 int a;<br>=C2=A0 =C2=A0 int b;<br>};<br>=C2=
=A0<br>int main() {<br>=C2=A0 =C2=A0 s x;<br>=C2=A0 =C2=A0 s y(42);<br>=C2=
=A0 =C2=A0 s z(default, 42);<br>=C2=A0 =C2=A0 return 0;<br>}</p><p>The curr=
ent solution has a number of drawbacks.<br>1) It&#39;s unnecessarily verbos=
e.<br>2) It&#39;s easy to mess up for parameters that have the same type. (=
`s z(s::default_b, 42)` - Oops, passed `default_b` as `a`.)<br>3) When look=
ing up the actual default values there is one more hop to make. It&#39;s no=
t sufficient to look at the function declaration but additionally we have t=
o look for e.g. default_a.</p><p></p><p></p><p></p><p></p><p></p><p></p></b=
lockquote></div></blockquote></div></div></div></div></div><div><div><div><=
div class=3D"h5">

<p></p>

-- <br>
<br>
--- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br></div></div>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a rel=3D"nofollow">std-proposal...@isocpp.org</a>.<br>
To post to this group, send email to <a rel=3D"nofollow">std-pr...@isocpp.o=
rg</a>.<span class=3D""><br>
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/" rel=3D"nofollow" target=3D"_blank">http://groups.google.com=
/a/isocpp.org/group/std-proposals/</a>.<br>
</span></div></div></blockquote></div><br></div>
</blockquote></div><div class=3D"HOEnZb"><div class=3D"h5">

<p></p>

-- <br>
<br>
--- <br>
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org" target=3D"_=
blank">std-proposals+unsubscribe@isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">std-proposals@isocpp.org</a>.<br>
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/" target=3D"_blank">http://groups.google.com/a/isocpp.org/gro=
up/std-proposals/</a>.<br>
</div></div></blockquote></div><br></div>

<p></p>

-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />

--94eb2c0912546d21f2051dadfff8--

.
