220 32400 <c67567e3-2086-4f43-9859-6e2a58ba51b7@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: Denis Kotov <redradist@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: When C++ will support unconstrained generic
 functions ?
Date: Thu, 11 May 2017 13:34:28 -0700 (PDT)
Lines: 289
Approved: news@gmane.org
Message-ID: <c67567e3-2086-4f43-9859-6e2a58ba51b7@isocpp.org>
References: <e59063c6-c646-4d7e-965a-6e404f17886a@isocpp.org>
 <c9b3d990-d3c3-4a26-b927-460e0c9c7461@isocpp.org>
 <2b6b016d-3463-416b-afd5-d10bac62a334@isocpp.org>
 <3657aeea-1787-40ee-9320-9b6e6466f061@isocpp.org>
 <872d1f11-6ded-4398-9117-1c3871f364b4@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_5377_176465285.1494534868848"
X-Trace: blaine.gmane.org 1494534877 29242 195.159.176.226 (11 May 2017 20:34:37 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Thu, 11 May 2017 20:34:37 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDY2PNGE6QOBBVMV2PEAKGQE65MFDGA@isocpp.org Thu May 11 22:34:30 2017
Return-path: <std-proposals+bncBDY2PNGE6QOBBVMV2PEAKGQE65MFDGA@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-yb0-f198.google.com ([209.85.213.198])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDY2PNGE6QOBBVMV2PEAKGQE65MFDGA@isocpp.org>)
	id 1d8un8-0007My-Gb
	for gclcip-std-proposals@m.gmane.org; Thu, 11 May 2017 22:34:30 +0200
Original-Received: by mail-yb0-f198.google.com with SMTP id k129sf22832626ybb.15
        for <gclcip-std-proposals@m.gmane.org>; Thu, 11 May 2017 13:34:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=B7x53PCg/zYBnXX9+4bbS/SKtG26bhvLDOjbMXWOqfc=;
        b=vBtFT/ejNh486/h+VQbSb5NRPwFTXf0ygm2u1TG1uudXzQoEmclt1Ify3rxxA805+g
         QNu/2Ztf3lsM/dKzd0yz+sQ4ZOq0DNtL9Lwpvlv5AsgSqLeEBXFTOeI4aaYcNH6gvv38
         PmdV+iLDy0pWPsM19NjPi8ojz8dxplvhOIm+G/RwRIGX/lxIeWfnU3Tgy8deaM619YNh
         ZamLbVU7tJO/Du4z6AU9KnMiC6Px8wp0FDdwcslLSMtRMxszY2LSsplo4CE/Fg+2s1G8
         UJiqrdhOhPdlmiAPOtoetkSOZr72hzgCb4NbEZPA6foGdjbZEdv7YYjTaI8ey4BS5fez
         ex7A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20161025;
        h=date:from:to:message-id:in-reply-to:references:subject:mime-version
         :x-original-sender:reply-to:precedence:mailing-list:list-id
         :x-spam-checked-in-group:list-post:list-help:list-archive
         :list-subscribe:list-unsubscribe;
        bh=B7x53PCg/zYBnXX9+4bbS/SKtG26bhvLDOjbMXWOqfc=;
        b=ZVcCWU6H4CT8Zv17ZPYMgUfc6st8v09IkX3gG967biKrcwohNHaf6drehBpFU0hgoH
         8jrpD7iQ8zORJW56MIy+XxPkJFcHJAX2Bv/0H6Dv563cvn/OuuRR0ZbC/gRzMG9GSlTP
         XiJRhzJY1PWblGxUViaVS8DvtxkG+5lObcQi3cHlDwzFH814yW59XugtFQW7TULOvF1K
         n+VS4xDbtE29YycAPHayu4/d3PvH7Ty023Ip/yTAtCRMN/HShjgG5FcXhwC24JZ/MdYj
         x2NqO3h1e3VaQ+D5BdE8NdaxVCC1R3exCHkgMsJ8PmpSjkWcRtMKIgIIy95vEea6bLNa
         IR9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:date:from:to:message-id:in-reply-to:references
         :subject:mime-version:x-original-sender:reply-to:precedence
         :mailing-list:list-id:x-spam-checked-in-group:list-post:list-help
         :list-archive:list-subscribe:list-unsubscribe;
        bh=B7x53PCg/zYBnXX9+4bbS/SKtG26bhvLDOjbMXWOqfc=;
        b=HmI/mXXc9degCOr1Kj+zXHzS7s4Epq7jOpYrthT00cqoUk8h3SMypN2KqfonEhV2Ot
         VJISL5hhWRtWpKeOgN8QkycbzbobzRSZMLN7NV/MyMuar+Fc9QdUEEwFgWwBTjE1LMFV
         YfTN/GJuI1Ca2okg1gKBIhfHlAZfxeFtOyLwLPiA9Krc2Px5FSE0x9AeDGPNAsH/f5MH
         wB45xD/PzRTFth8VC7pbqklYiGWK31wYfY/KEoEYKTwj7LJaFhlzqgCspwEGK1KVK2uS
         YCaGqG3cIeXZfRZdP5AAPWlDBYEJax4uZYsdg5UYpA6Al26a7+hFNuO7W6WE+WpwYgRe
         z/JQ==
X-Gm-Message-State: AODbwcA4JeHuvGSHVgz3ec8rPn/DMfcF1sPlNutWSaKb2Rqat+83rXDc
	cPW0uz1ef06CgQ==
X-Received: by 10.13.228.197 with SMTP id n188mr252573ywe.156.1494534870473;
        Thu, 11 May 2017 13:34:30 -0700 (PDT)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.157.27.130 with SMTP id z2ls5795302otd.45.gmail; Thu, 11 May
 2017 13:34:29 -0700 (PDT)
X-Received: by 10.157.14.91 with SMTP id n27mr9265otd.8.1494534869375;
        Thu, 11 May 2017 13:34:29 -0700 (PDT)
In-Reply-To: <872d1f11-6ded-4398-9117-1c3871f364b4@isocpp.org>
X-Original-Sender: redradist@gmail.com
Precedence: list
Mailing-list: list std-proposals@isocpp.org; contact std-proposals+owners@isocpp.org
List-ID: <std-proposals.isocpp.org>
X-Google-Group-Id: 399137483710
List-Post: <https://groups.google.com/a/isocpp.org/group/std-proposals/post>, <mailto:std-proposals@isocpp.org>
List-Help: <https://support.google.com/a/isocpp.org/bin/topic.py?topic=25838>, <mailto:std-proposals+help@isocpp.org>
List-Archive: <https://groups.google.com/a/isocpp.org/group/std-proposals/>
List-Subscribe: <https://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>,
 <https://groups.google.com/a/isocpp.org/group/std-proposals/subscribe>
Xref: news.gmane.org gmane.comp.lang.c++.isocpp.proposals:32400
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/32400>

------=_Part_5377_176465285.1494534868848
Content-Type: multipart/alternative; 
	boundary="----=_Part_5378_1446275676.1494534868849"

------=_Part_5378_1446275676.1494534868849
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Arthur O'Dwyer
*>> Anyway, @Denis, you probably don't want 'auto' parameters on your=20
functions anyway, because then you still have to deal with the messiness of=
=20
overload sets, and having to define all your functions in header files, and=
=20
so on. If you really find yourself doing a lot of template functions, maybe=
=20
consider*

I would say that I would prefer writing in such way, because for me it=20
seems like pure polymorphic programming ... It is like Python programming=
=20
but with ability to compile your Python program and find all issues at=20
compile time instead of runtime.
It is so awesome !!

=D1=81=D1=80=D0=B5=D0=B4=D0=B0, 10 =D0=BC=D0=B0=D1=8F 2017 =D0=B3., 1:38:00=
 UTC+3 =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=
=D1=8C Arthur O'Dwyer =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BB:
>
> On Tuesday, May 9, 2017 at 11:30:47 AM UTC-7, Nicol Bolas wrote:
>>
>> On Tuesday, May 9, 2017 at 2:17:45 PM UTC-4, Denis Kotov wrote:
>>>
>>> Hi Nicol,
>>>
>>> It is very strange why it is a part of concept, for me it seems like=20
>>> extension for templates
>>>
>>
>> Because the Concepts TS defines the ability to constraint function=20
>> parameters transparently:
>>
>> void Func(ConceptName t);
>>
>> is equivalent to:
>>
>> template<ConceptName T>
>> void Func(T t);
>>
>> `auto` is thus redefined as simply an unconstrained context.
>>
>> It's not strange at all. It's a natural thing for Concepts TS to do. And=
=20
>> besides, once you have concepts, you'll be using them far more than `aut=
o`=20
>> for function parameters. There aren't that many functions that can truly=
=20
>> take *any* type. Even forwarding functions like `emplace` should=20
>> constrain their parameters to those types which can actually be used to=
=20
>> construct the object they're supposed to.
>>
>
> As Nicol also wrote:
> > There is a lot of uncertainty about how much of Concepts TS's "terse"=
=20
> syntax we really want in the language.
>
> The fact that Andrew Sutton (or whoever it was =E2=80=94 apologies if I'm=
 wrong =E2=80=94=20
> but my impression is that it was him) bundled "terse syntax" straight int=
o=20
> the Concepts proposal, instead of splitting up the functional "Concepts"=
=20
> proposal from the purely syntactic-sugar "terse syntax" proposal, is one =
of=20
> the (many) reasons that "Concepts" has taken so long to get into the=20
> language.
>
> My impression is that a significant fraction of the Committee share=20
> Nicol's "uncertainty" about terse syntax =E2=80=94 i.e., "I'd be more ame=
nable to=20
> this proposal if it didn't come with terse syntax."
> My further impression is that a vocal minority are unhappy at a higher=20
> level with how Sutton has handled the level-1 complaints =E2=80=94 i.e., =
"I'd=20
> actually be in favor of all of these features separately, but after the=
=20
> aforementioned response, continuing to bundle them together is so=20
> disingenuous that I oppose the bundled proposal on moral grounds."
>
> http://honermann.net/blog/2016/03/06/why-concepts-didnt-make-cxx17/
>
> Anyway, @Denis, you probably don't want 'auto' parameters on your=20
> functions anyway, because then you still have to deal with the messiness =
of=20
> overload sets, and having to define all your functions in header files, a=
nd=20
> so on. If you really find yourself doing a lot of template functions, may=
be=20
> consider
>
> // Unconstrained generic function (as inline variable of closure type)
> inline auto func =3D [](const auto &i) {
>   std::cout << "Type of object i is " << typeid(i).name() << std::endl;
>   std::cout << "Value is " << i << std::endl;
> };
>
> int main() {
>   func(1);
>   func(std::string{"Hi Denis !"});
>   return 0;
> }
>
>
> and let us know how it goes? (Probably a bad idea, but I'm not joking tha=
t=20
> it *might* be worth a try.)
>
> my $.02,
> Arthur
>

--=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/c67567e3-2086-4f43-9859-6e2a58ba51b7%40isocpp.or=
g.

------=_Part_5378_1446275676.1494534868849
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><span class=3D"_username"><span class=3D"IVILX2C-D-a g-hov=
ercard" style=3D"color: rgb(34, 34, 34);" data-userid=3D"114256375634250461=
400" data-name=3D"Arthur O&#39;Dwyer">Arthur O&#39;Dwyer</span></span><br><=
b>&gt;&gt; Anyway, @Denis, you probably don&#39;t want &#39;auto&#39; param=
eters on your=20
functions anyway, because then you still have to deal with the messiness
 of overload sets, and having to define all your functions in header=20
files, and so on. If you really find yourself doing a lot of template=20
functions, maybe consider</b><br><br>I would say that I would prefer writin=
g in such way, because for me it seems like pure polymorphic programming ..=
.. It is like Python programming but with ability to compile your Python pro=
gram and find all issues at compile time instead of runtime.<br>It is so aw=
esome !!<br><br>=D1=81=D1=80=D0=B5=D0=B4=D0=B0, 10 =D0=BC=D0=B0=D1=8F 2017 =
=D0=B3., 1:38:00 UTC+3 =D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=
=82=D0=B5=D0=BB=D1=8C Arthur O&#39;Dwyer =D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=
=B0=D0=BB:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin-left:=
 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"ltr">On =
Tuesday, May 9, 2017 at 11:30:47 AM UTC-7, Nicol Bolas wrote:<blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #cc=
c solid;padding-left:1ex"><div dir=3D"ltr">On Tuesday, May 9, 2017 at 2:17:=
45 PM UTC-4, Denis Kotov wrote:<blockquote class=3D"gmail_quote" style=3D"m=
argin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><div=
 dir=3D"ltr">Hi Nicol,<br><br>It is very strange why it is a part of concep=
t, for me it seems like extension for templates</div></blockquote><div><br>=
Because the Concepts TS defines the ability to constraint function paramete=
rs transparently:<br><br><div style=3D"background-color:rgb(250,250,250);bo=
rder-color:rgb(187,187,187);border-style:solid;border-width:1px"><code><div=
><span style=3D"color:#008">void</span><span style=3D"color:#000"> </span><=
span style=3D"color:#606">Func</span><span style=3D"color:#660">(</span><sp=
an style=3D"color:#606">ConceptName</span><span style=3D"color:#000"> t</sp=
an><span style=3D"color:#660">);</span></div></code></div><br>is equivalent=
 to:<br><br><div style=3D"background-color:rgb(250,250,250);border-color:rg=
b(187,187,187);border-style:solid;border-width:1px"><code><div><span style=
=3D"color:#008">template</span><span style=3D"color:#660">&lt;</span><span =
style=3D"color:#606">ConceptName</span><span style=3D"color:#000"> T</span>=
<span style=3D"color:#660">&gt;</span><span style=3D"color:#000"><br></span=
><span style=3D"color:#008">void</span><span style=3D"color:#000"> </span><=
span style=3D"color:#606">Func</span><span style=3D"color:#660">(</span><sp=
an style=3D"color:#000">T t</span><span style=3D"color:#660">);</span><span=
 style=3D"color:#000"><br></span></div></code></div><br>`auto` is thus rede=
fined as simply an unconstrained context.<br><br>It&#39;s not strange at al=
l. It&#39;s a natural thing for Concepts TS to do. And besides, once you ha=
ve concepts, you&#39;ll be using them far more than `auto` for function par=
ameters. There aren&#39;t that many functions that can truly take <i>any</i=
> type. Even forwarding functions like `emplace` should constrain their par=
ameters to those types which can actually be used to construct the object t=
hey&#39;re supposed to.<br></div></div></blockquote><div><br></div>As Nicol=
 also wrote:<div><span style=3D"font-family:monospace">&gt;=C2=A0</span><sp=
an style=3D"font-family:monospace">There is a lot of uncertainty about how =
much of Concepts TS&#39;s &quot;terse&quot; syntax we really want in the la=
nguage.</span></div><br>The fact that Andrew Sutton (or whoever it was =E2=
=80=94 apologies if I&#39;m wrong =E2=80=94 but my impression is that it wa=
s him) bundled &quot;terse syntax&quot; straight into the Concepts proposal=
, instead of splitting up the functional &quot;Concepts&quot; proposal from=
 the purely syntactic-sugar &quot;terse syntax&quot; proposal, is one of th=
e (many) reasons that &quot;Concepts&quot; has taken so long to get into th=
e language.<br><br>My impression is that a significant fraction of the Comm=
ittee share Nicol&#39;s &quot;uncertainty&quot; about terse syntax =E2=80=
=94 i.e., &quot;I&#39;d be more amenable to this proposal if it didn&#39;t =
come with terse syntax.&quot;<br>My further impression is that a vocal mino=
rity are unhappy at a higher level with how Sutton has handled the level-1 =
complaints =E2=80=94 i.e., &quot;I&#39;d actually be in favor of all of the=
se features separately, but=C2=A0after the aforementioned response, continu=
ing to bundle them together is so disingenuous that I oppose the bundled pr=
oposal on moral grounds.&quot;<div><span style=3D"font-family:monospace"><b=
r></span></div><div><a href=3D"http://honermann.net/blog/2016/03/06/why-con=
cepts-didnt-make-cxx17/" target=3D"_blank" rel=3D"nofollow" onmousedown=3D"=
this.href=3D&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fhonermann.net%=
2Fblog%2F2016%2F03%2F06%2Fwhy-concepts-didnt-make-cxx17%2F\x26sa\x3dD\x26sn=
tz\x3d1\x26usg\x3dAFQjCNGPmwtRMZdVAzIRrRNRliDDAktG9A&#39;;return true;" onc=
lick=3D"this.href=3D&#39;http://www.google.com/url?q\x3dhttp%3A%2F%2Fhonerm=
ann.net%2Fblog%2F2016%2F03%2F06%2Fwhy-concepts-didnt-make-cxx17%2F\x26sa\x3=
dD\x26sntz\x3d1\x26usg\x3dAFQjCNGPmwtRMZdVAzIRrRNRliDDAktG9A&#39;;return tr=
ue;">http://honermann.net/blog/<wbr>2016/03/06/why-concepts-didnt-<wbr>make=
-cxx17/</a><span style=3D"font-family:monospace"><br></span></div><div><br>=
</div><div>Anyway, @Denis, you probably don&#39;t want &#39;auto&#39; param=
eters on your functions anyway, because then you still have to deal with th=
e messiness of overload sets, and having to define all your functions in he=
ader files, and so on. If you really find yourself doing a lot of template =
functions, maybe consider</div><div><br></div><div><pre><code><span style=
=3D"color:rgb(136,0,0)">// Unconstrained generic function (as inline variab=
le of closure type)</span><span style=3D"color:rgb(0,0,0)"><br></span><span=
 style=3D"color:rgb(0,0,136)">inline auto</span><span style=3D"color:rgb(0,=
0,0)"> func =3D []</span><span style=3D"color:rgb(102,102,0)">(</span><span=
 style=3D"color:rgb(0,0,136)">const</span><span style=3D"color:rgb(0,0,0)">=
 </span><span style=3D"color:rgb(0,0,136)">auto</span><span style=3D"color:=
rgb(0,0,0)"> </span><span style=3D"color:rgb(102,102,0)">&amp;</span><span =
style=3D"color:rgb(0,0,0)">i</span><span style=3D"color:rgb(102,102,0)">)</=
span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(102,=
102,0)">{</span><span style=3D"color:rgb(0,0,0)"><br>=C2=A0 std</span><span=
 style=3D"color:rgb(102,102,0)">::</span><span style=3D"color:rgb(0,0,0)">c=
out </span><span style=3D"color:rgb(102,102,0)">&lt;&lt;</span><span style=
=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,136,0)">&quot;Type=
 of object i is &quot;</span><span style=3D"color:rgb(0,0,0)"> </span><span=
 style=3D"color:rgb(102,102,0)">&lt;&lt;</span><span style=3D"color:rgb(0,0=
,0)"> </span><span style=3D"color:rgb(0,0,136)">typeid</span><span style=3D=
"color:rgb(102,102,0)">(</span><span style=3D"color:rgb(0,0,0)">i</span><sp=
an style=3D"color:rgb(102,102,0)">).</span><span style=3D"color:rgb(0,0,0)"=
>name</span><span style=3D"color:rgb(102,102,0)">()</span><span style=3D"co=
lor:rgb(0,0,0)"> </span><span style=3D"color:rgb(102,102,0)">&lt;&lt;</span=
><span style=3D"color:rgb(0,0,0)"> std</span><span style=3D"color:rgb(102,1=
02,0)">::</span><span style=3D"color:rgb(0,0,0)">endl</span><span style=3D"=
color:rgb(102,102,0)">;</span><span style=3D"color:rgb(0,0,0)"><br>=C2=A0 s=
td</span><span style=3D"color:rgb(102,102,0)">::</span><span style=3D"color=
:rgb(0,0,0)">cout </span><span style=3D"color:rgb(102,102,0)">&lt;&lt;</spa=
n><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(0,136,0=
)">&quot;Value is &quot;</span><span style=3D"color:rgb(0,0,0)"> </span><sp=
an style=3D"color:rgb(102,102,0)">&lt;&lt;</span><span style=3D"color:rgb(0=
,0,0)"> i </span><span style=3D"color:rgb(102,102,0)">&lt;&lt;</span><span =
style=3D"color:rgb(0,0,0)"> std</span><span style=3D"color:rgb(102,102,0)">=
::</span><span style=3D"color:rgb(0,0,0)">endl</span><span style=3D"color:r=
gb(102,102,0)">;</span><span style=3D"color:rgb(0,0,0)"><br></span><span st=
yle=3D"color:rgb(102,102,0)">};</span><span style=3D"color:rgb(0,0,0)"><br>=
<br></span><span style=3D"color:rgb(0,0,136)">int</span><span style=3D"colo=
r:rgb(0,0,0)"> main</span><span style=3D"color:rgb(102,102,0)">()</span><sp=
an style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:rgb(102,102,0)">=
{</span><span style=3D"color:rgb(0,0,0)"><br>=C2=A0 func</span><span style=
=3D"color:rgb(102,102,0)">(</span><span style=3D"color:rgb(0,102,102)">1</s=
pan><span style=3D"color:rgb(102,102,0)">);</span><span style=3D"color:rgb(=
0,0,0)"><br>=C2=A0 func</span><span style=3D"color:rgb(102,102,0)">(</span>=
<span style=3D"color:rgb(0,0,0)">std</span><span style=3D"color:rgb(102,102=
,0)">::</span><span style=3D"color:rgb(0,0,136)">string</span><span style=
=3D"color:rgb(102,102,0)">{</span><span style=3D"color:rgb(0,136,0)">&quot;=
Hi Denis !&quot;</span><span style=3D"color:rgb(102,102,0)">});</span><span=
 style=3D"color:rgb(0,0,0)"><br>=C2=A0 </span><span style=3D"color:rgb(0,0,=
136)">return</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"=
color:rgb(0,102,102)">0</span><span style=3D"color:rgb(102,102,0)">;</span>=
<span style=3D"color:rgb(0,0,0)"><br></span><span style=3D"color:rgb(102,10=
2,0)">}</span></code></pre><br>and let us know how it goes? (Probably a bad=
 idea, but I&#39;m not joking that it <i>might</i> be worth a try.)<br><br>=
</div><div>my $.02,</div><div>Arthur</div></div></blockquote></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals&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/c67567e3-2086-4f43-9859-6e2a58ba51b7%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/c67567e3-2086-4f43-9859-6e2a58ba51b7=
%40isocpp.org</a>.<br />

------=_Part_5378_1446275676.1494534868849--

------=_Part_5377_176465285.1494534868848--

.
