220 30018 <CAFdMc-07FWpV07b3WSz0U=uDNHXM19xgBTH=Cpt=Kvty4886FQ@mail.gmail.com> article
Path: news.gmane.org!.POSTED!not-for-mail
From: "dgutson ." <danielgutson@gmail.com>
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: Re: join/split for string & string_view
Date: Sun, 25 Dec 2016 13:17:36 -0300
Lines: 292
Approved: news@gmane.org
Message-ID: <CAFdMc-07FWpV07b3WSz0U=uDNHXM19xgBTH=Cpt=Kvty4886FQ@mail.gmail.com>
References: <f609c0d3-c9ba-4a64-a99f-c2e64091b4e2@isocpp.org>
 <d8544b44-9ed4-403d-a980-6dda516933f6@isocpp.org> <172d08f0-a3da-4b9e-bfdd-985fb1f527c8@isocpp.org>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=94eb2c05f4da1c1eec05447df558
X-Trace: blaine.gmane.org 1482682663 2515 195.159.176.226 (25 Dec 2016 16:17:43 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Sun, 25 Dec 2016 16:17:43 +0000 (UTC)
Cc: lnaltidev@gmail.com
To: std-proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDE3NBMV6UFBBIPC77BAKGQE3WVXUZY@isocpp.org Sun Dec 25 17:17:37 2016
Return-path: <std-proposals+bncBDE3NBMV6UFBBIPC77BAKGQE3WVXUZY@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-yb0-f199.google.com ([209.85.213.199])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDE3NBMV6UFBBIPC77BAKGQE3WVXUZY@isocpp.org>)
	id 1cLBUM-000802-Be
	for gclcip-std-proposals@m.gmane.org; Sun, 25 Dec 2016 17:17:34 +0100
Original-Received: by mail-yb0-f199.google.com with SMTP id 10sf114570896ybz.4
        for <gclcip-std-proposals@m.gmane.org>; Sun, 25 Dec 2016 08:17:39 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=isocpp-org.20150623.gappssmtp.com; s=20150623;
        h=mime-version:in-reply-to:references:from:date:message-id:subject:to
         :cc: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=7XT0af2kMPyZU1scrLUE4ng2y5BMT9BPp2ABPR6xtuI=;
        b=ObFeodCUTzA9wqACW+a5Hvle++gunJXb6SO0wCuPYshCmXJcctlr5Jl/Payvlm5n0M
         6ayGoDOwQNoA/clsvdDWF6L4ziV59Z1LBJ8pEjUzWqnpGOu9l5yk46YyBv3KOIFRjbKP
         G4qqknxPuGBC0mYbzPyQQn9vD51vasMA+9CEOZ27LXNr8DmHsLE6WdDAj2/ZQpDP7zK+
         PCZ9TKd9gch5klNY9Jwg+X11KvEI1m2BdX8Cxpt99FifNAxcXhXw767JfHB4Kg7UtNYE
         K0Z4Gr+zBJuyoLwV3aTJdo/hD2Pp1KD+SBHNBg5ZvOu5DSMlAwWqiAX/CKbpXvvzP1Du
         GiAQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20161025;
        h=x-gm-message-state:mime-version:in-reply-to:references:from:date
         :message-id:subject:to:cc: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=7XT0af2kMPyZU1scrLUE4ng2y5BMT9BPp2ABPR6xtuI=;
        b=nozbHknejDExNq0MnFg3TWY9OfKAriPswUsTB49Lze5/RgKlGxZ4j+X/rpS8sdEmsN
         ZyvRqLkp1pR7nbn4tmw8fDzlUiS8YIob/JLY7Mqx1HaxoC8iBNq+a72/JdEmdJhfC853
         IiNleotzVWtsBaL6D6m9tjxasG0ACwt1wl9t/gdz5eCAEN4JJ/WwHjfn5lcMsViPRwAA
         BO19HN+SXfTT8duH/aqKBgkrRL4VeXHx7lNiYCYiTpnWdQZBBfl+WYS5TSLBFRx/PXrU
         Dakm5G05O3Ks5E2aK2tmtbcwyk5UENDIQeK0OqTNP1C6negVcQGq5LzllXr3bc3vyg2n
         /B0A==
X-Gm-Message-State: AIkVDXL9+ljQIyGBOoGC19JBUAGmTtbyb0Doh3GEhcp/QLN0LWGQQgyAoBNtAPwH4SBjlw==
X-Received: by 10.129.92.2 with SMTP id q2mr7037659ywb.57.1482682658760;
        Sun, 25 Dec 2016 08:17:38 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.107.147.7 with SMTP id v7ls7575271iod.6.gmail; Sun, 25 Dec
 2016 08:17:37 -0800 (PST)
X-Received: by 10.107.28.12 with SMTP id c12mr13532111ioc.223.1482682657631;
        Sun, 25 Dec 2016 08:17:37 -0800 (PST)
Original-Received: from mail-it0-x236.google.com (mail-it0-x236.google.com. [2607:f8b0:4001:c0b::236])
        by mx.google.com with ESMTPS id u186si6582957itf.113.2016.12.25.08.17.37
        for <std-proposals@isocpp.org>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Sun, 25 Dec 2016 08:17:37 -0800 (PST)
Received-SPF: pass (google.com: domain of danielgutson@gmail.com designates 2607:f8b0:4001:c0b::236 as permitted sender) client-ip=2607:f8b0:4001:c0b::236;
Original-Received: by mail-it0-x236.google.com with SMTP id 75so39773786ite.1
        for <std-proposals@isocpp.org>; Sun, 25 Dec 2016 08:17:37 -0800 (PST)
X-Received: by 10.36.216.70 with SMTP id b67mr20396937itg.5.1482682657407;
 Sun, 25 Dec 2016 08:17:37 -0800 (PST)
Original-Received: by 10.36.79.210 with HTTP; Sun, 25 Dec 2016 08:17:36 -0800 (PST)
Original-Received: by 10.36.79.210 with HTTP; Sun, 25 Dec 2016 08:17:36 -0800 (PST)
In-Reply-To: <172d08f0-a3da-4b9e-bfdd-985fb1f527c8@isocpp.org>
X-Original-Sender: danielgutson@gmail.com
X-Original-Authentication-Results: mx.google.com;       dkim=pass
 header.i=@gmail.com;       spf=pass (google.com: domain of
 danielgutson@gmail.com designates 2607:f8b0:4001:c0b::236 as permitted
 sender) smtp.mailfrom=danielgutson@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-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:30018
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/30018>

--94eb2c05f4da1c1eec05447df558
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

El 25/12/2016 12:41, "Nicol Bolas" <jmckesson@gmail.com> escribi=C3=B3:

On Sunday, December 25, 2016 at 5:32:44 AM UTC-5, lnal...@gmail.com wrote:
>
> Hello,
>
>
> Most of modern language (D, Python, Java, C#, Go, Rust) got a split metho=
d
> on their string type, so I think it really make sense to have something
> similar in C++.
>

All of those languages also only have a single string type. C++ has
*hundreds*. Even the *standard library* has 2, and that doens't even count
`const char*`.

Having a `split` function that can *only* be used with the standard library
string types is pathetic. Especially when it could be made to be used with
any string type (that provides a conversion to `string_view`) with ease.

If you want to suggest that `basic_string` and `string_view` should have
member versions that call the non-member algorithms, fine. But the
non-member function is where the actual work happens.


> All of them returns a 'vector' and I think is the main waited result.
>

No.

While we should not be ignorant of what other languages are doing, we also
should not pretend that the design of other languages is a priori correct
for C++. We should do what is best for C++.

And one principle of C++ is that we do not make people pay for features
they don't need to use. Forcing the return of a `vector` makes people pay
for memory allocations that they may not use.

I think it should not be required to mastering all subtilities of the STL
> to do something a simple as that.
>

Master the subtleties of what? Of using a range? That should be an early
lesson for C++ programmers; it's hardly deep metaprogramming magic.

If you're going to be able to work in a language, you *need* to know its
idioms. And ranges are very important idioms in C++. We shouldn't cater to
the demographic of people who learn just the syntax of a language and then
pretend that they know it.

I think it should be possible to write :
> auto MyResult=3D "my,csv,line"s.split(",");
> myvar=3DMyResult[1];
> for(auto sv : MyResult)
>
>
Here is what that code would look like under the guidelines I (and others)
outlined previously:

vector MyResult(split("my,csv,line", ","));
myvar =3D MyResult[1];
for(auto sv : MyResult)

See how simple that is? This only allocates memory in `vector`'s
constructor (so you're not needlessly allocating a `basic_string`, just for
a string literal).

Plus, if you just want the iteration, without the need for random access:

for(auto sv : split("my,csv,line", ","))

This performs *zero* memory allocations. Why *shouldn't* this be the
default? In C++, the default ought to be fast, where possible.


I think there should also be a callback-oriented version by providing a
callable template argument (e.g. lambda, std::function, function ptr, etc)
which requires no memory allocation.



Perhaps having multiple (like for stoi,l,ll) could be an option
>

No. A single function returning a range, as outlined above, can cover all
of these cases effectively.

--=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
email 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/172d08f0-a3da-4b9e-
bfdd-985fb1f527c8%40isocpp.org
<https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/172d08f0-a3da=
-4b9e-bfdd-985fb1f527c8%40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter=
>
..

--=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/CAFdMc-07FWpV07b3WSz0U%3DuDNHXM19xgBTH%3DCpt%3DK=
vty4886FQ%40mail.gmail.com.

--94eb2c05f4da1c1eec05447df558
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto"><div><br><div class=3D"gmail_extra"><br><div class=3D"gma=
il_quote">El 25/12/2016 12:41, &quot;Nicol Bolas&quot; &lt;<a href=3D"mailt=
o:jmckesson@gmail.com">jmckesson@gmail.com</a>&gt; escribi=C3=B3:<br type=
=3D"attribution"><blockquote class=3D"quote" style=3D"margin:0 0 0 .8ex;bor=
der-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div class=3D"qu=
oted-text">On Sunday, December 25, 2016 at 5:32:44 AM UTC-5, <a href=3D"mai=
lto:lnal...@gmail.com" target=3D"_blank">lnal...@gmail.com</a> wrote:<block=
quote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left=
:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><p>Hello,</p><p><br>Most=
 of modern language (D, Python, Java, C#, Go, Rust) got a split=20
method on their string type, so I think it really make sense to have someth=
ing=20
similar in C++.<br></p></div></blockquote></div><div><br>All of those langu=
ages also only have a single string type. C++ has <i>hundreds</i>. Even the=
 <i>standard library</i> has 2, and that doens&#39;t even count `const char=
*`.<br><br>Having a `split` function that can <i>only</i> be used with the =
standard library string types is pathetic. Especially when it could be made=
 to be used with any string type (that provides a conversion to `string_vie=
w`) with ease.<br><br>If you want to suggest that `basic_string` and `strin=
g_view` should have member versions that call the non-member algorithms, fi=
ne. But the non-member function is where the actual work happens.<br>=C2=A0=
</div><div class=3D"quoted-text"><blockquote class=3D"gmail_quote" style=3D=
"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-left:1ex"><d=
iv dir=3D"ltr"><p>All of them returns a &#39;vector&#39; and I think is the=
 main waited=20
result.</p></div></blockquote></div><div><br>No.<br><br>While we should not=
 be ignorant of what other languages are doing, we also should not pretend =
that the design of other languages is a priori correct for C++. We should d=
o what is best for C++.<br><br>And one principle of C++ is that we do not m=
ake people pay for features they don&#39;t need to use. Forcing the return =
of a `vector` makes people pay for memory allocations that they may not use=
..<br><br></div><div class=3D"quoted-text"><blockquote class=3D"gmail_quote"=
 style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;padding-lef=
t:1ex"><div dir=3D"ltr"><p>I think it should=20
not be required to mastering all subtilities of the STL to do something a s=
imple=20
as that.</p></div></blockquote></div><div><br>Master the subtleties of what=
? Of using a range? That should be an early lesson for C++ programmers; it&=
#39;s hardly deep metaprogramming magic.<br><br>If you&#39;re going to be a=
ble to work in a language, you <i>need</i> to know its idioms. And ranges a=
re very important idioms in C++. We shouldn&#39;t cater to the demographic =
of people who learn just the syntax of a language and then pretend that the=
y know it.<br><br></div><div class=3D"quoted-text"><blockquote class=3D"gma=
il_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc solid;pa=
dding-left:1ex"><div dir=3D"ltr">
<p>I think it should be possible to write :</p>
<div style=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,18=
7);border-style:solid;border-width:1px;word-wrap:break-word"><code><div><sp=
an style=3D"color:#008">auto</span><span style=3D"color:#000"> </span><span=
 style=3D"color:#606">MyResult</span><span style=3D"color:#660">=3D</span><=
span style=3D"color:#000"> </span><span style=3D"color:#080">&quot;my,csv,l=
ine&quot;</span><span style=3D"color:#000">s</span><span style=3D"color:#66=
0">.</span><span style=3D"color:#000">split</span><span style=3D"color:#660=
">(</span><span style=3D"color:#080">&quot;,&quot;</span><span style=3D"col=
or:#660">);</span><span style=3D"color:#000"><br>myvar</span><span style=3D=
"color:#660">=3D</span><span style=3D"color:#606">MyResult</span><span styl=
e=3D"color:#660">[</span><span style=3D"color:#066">1</span><span style=3D"=
color:#660">];</span><span style=3D"color:#000"> <br></span><span style=3D"=
color:#008">for</span><span style=3D"color:#660">(</span><span style=3D"col=
or:#008">auto</span><span style=3D"color:#000"> sv </span><span style=3D"co=
lor:#660">:</span><span style=3D"color:#000"> </span><span style=3D"color:#=
606">MyResult</span><span style=3D"color:#660">)</span><span style=3D"color=
:#000"> <br></span></div></code></div><p></p></div></blockquote></div><div>=
<br>Here is what that code would look like under the guidelines I (and othe=
rs) outlined previously:<br><br><div style=3D"background-color:rgb(250,250,=
250);border-color:rgb(187,187,187);border-style:solid;border-width:1px" cla=
ss=3D"m_6587239836056522751prettyprint"><code class=3D"m_658723983605652275=
1prettyprint"><div class=3D"m_6587239836056522751subprettyprint"><span styl=
e=3D"color:#000" class=3D"m_6587239836056522751styled-by-prettify">vector <=
/span><span style=3D"color:#606" class=3D"m_6587239836056522751styled-by-pr=
ettify">MyResult</span><span style=3D"color:#660" class=3D"m_65872398360565=
22751styled-by-prettify">(</span><span style=3D"color:#000" class=3D"m_6587=
239836056522751styled-by-prettify">split</span><span style=3D"color:#660" c=
lass=3D"m_6587239836056522751styled-by-prettify">(</span><span style=3D"col=
or:#080" class=3D"m_6587239836056522751styled-by-prettify">&quot;my,csv,lin=
e&quot;</span><span style=3D"color:#660" class=3D"m_6587239836056522751styl=
ed-by-prettify">,</span><span style=3D"color:#000" class=3D"m_6587239836056=
522751styled-by-prettify"> </span><span style=3D"color:#080" class=3D"m_658=
7239836056522751styled-by-prettify">&quot;,&quot;</span><span style=3D"colo=
r:#660" class=3D"m_6587239836056522751styled-by-prettify">));</span><span s=
tyle=3D"color:#000" class=3D"m_6587239836056522751styled-by-prettify"><br>m=
yvar </span><span style=3D"color:#660" class=3D"m_6587239836056522751styled=
-by-prettify">=3D</span><span style=3D"color:#000" class=3D"m_6587239836056=
522751styled-by-prettify"> </span><span style=3D"color:#606" class=3D"m_658=
7239836056522751styled-by-prettify">MyResult</span><span style=3D"color:#66=
0" class=3D"m_6587239836056522751styled-by-prettify">[</span><span style=3D=
"color:#066" class=3D"m_6587239836056522751styled-by-prettify">1</span><spa=
n style=3D"color:#660" class=3D"m_6587239836056522751styled-by-prettify">];=
</span><span style=3D"color:#000" class=3D"m_6587239836056522751styled-by-p=
rettify"><br></span><span style=3D"color:#008" class=3D"m_65872398360565227=
51styled-by-prettify">for</span><span style=3D"color:#660" class=3D"m_65872=
39836056522751styled-by-prettify">(</span><span style=3D"color:#008" class=
=3D"m_6587239836056522751styled-by-prettify">auto</span><span style=3D"colo=
r:#000" class=3D"m_6587239836056522751styled-by-prettify"> sv </span><span =
style=3D"color:#660" class=3D"m_6587239836056522751styled-by-prettify">:</s=
pan><span style=3D"color:#000" class=3D"m_6587239836056522751styled-by-pret=
tify"> </span><span style=3D"color:#606" class=3D"m_6587239836056522751styl=
ed-by-prettify">MyResult</span><span style=3D"color:#660" class=3D"m_658723=
9836056522751styled-by-prettify">)</span></div></code></div><br>See how sim=
ple that is? This only allocates memory in `vector`&#39;s constructor (so y=
ou&#39;re not needlessly allocating a `basic_string`, just for a string lit=
eral).<br><br>Plus, if you just want the iteration, without the need for ra=
ndom access:<br><br><div style=3D"background-color:rgb(250,250,250);border-=
color:rgb(187,187,187);border-style:solid;border-width:1px" class=3D"m_6587=
239836056522751prettyprint"><code class=3D"m_6587239836056522751prettyprint=
"><div class=3D"m_6587239836056522751subprettyprint"><span style=3D"color:#=
008" class=3D"m_6587239836056522751styled-by-prettify">for</span><span styl=
e=3D"color:#660" class=3D"m_6587239836056522751styled-by-prettify">(</span>=
<span style=3D"color:#008" class=3D"m_6587239836056522751styled-by-prettify=
">auto</span><span style=3D"color:#000" class=3D"m_6587239836056522751style=
d-by-prettify"> sv </span><span style=3D"color:#660" class=3D"m_65872398360=
56522751styled-by-prettify">:</span><span style=3D"color:#000" class=3D"m_6=
587239836056522751styled-by-prettify"> split</span><span style=3D"color:#66=
0" class=3D"m_6587239836056522751styled-by-prettify">(</span><span style=3D=
"color:#080" class=3D"m_6587239836056522751styled-by-prettify">&quot;my,csv=
,line&quot;</span><span style=3D"color:#660" class=3D"m_6587239836056522751=
styled-by-prettify">,</span><span style=3D"color:#000" class=3D"m_658723983=
6056522751styled-by-prettify"> </span><span style=3D"color:#080" class=3D"m=
_6587239836056522751styled-by-prettify">&quot;,&quot;</span><span style=3D"=
color:#660" class=3D"m_6587239836056522751styled-by-prettify">))</span></di=
v></code></div><br>This performs <i>zero</i> memory allocations. Why <i>sho=
uldn&#39;t</i> this be the default? In C++, the default ought to be fast, w=
here possible.<br></div></div></blockquote></div></div></div><div dir=3D"au=
to"><br></div><div dir=3D"auto">I think there should also be a callback-ori=
ented version by providing a callable template argument (e.g. lambda, std::=
function, function ptr, etc) which requires no memory allocation.</div><div=
 dir=3D"auto"><br></div><div dir=3D"auto"><br></div><div dir=3D"auto"><div =
class=3D"gmail_extra"><div class=3D"gmail_quote"><blockquote class=3D"quote=
" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><=
div dir=3D"ltr"><div><br></div><div class=3D"quoted-text"><blockquote class=
=3D"gmail_quote" style=3D"margin:0;margin-left:0.8ex;border-left:1px #ccc s=
olid;padding-left:1ex"><div dir=3D"ltr">
<p></p><p>Perhaps having multiple (like for stoi,l,ll) could be an option</=
p></div></blockquote></div><div><br>No. A single function returning a range=
, as outlined above, can cover all of these cases effectively.<br></div></d=
iv><div class=3D"quoted-text">

<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" target=3D"_=
blank">std-proposals+unsubscribe@<wbr>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></div>
To view this discussion on the web visit <a href=3D"https://groups.google.c=
om/a/isocpp.org/d/msgid/std-proposals/172d08f0-a3da-4b9e-bfdd-985fb1f527c8%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" target=3D"_blank">=
https://groups.google.com/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/172d=
08f0-a3da-4b9e-<wbr>bfdd-985fb1f527c8%40isocpp.org</a><wbr>.<br>
</blockquote></div><br></div></div></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/CAFdMc-07FWpV07b3WSz0U%3DuDNHXM19xgBT=
H%3DCpt%3DKvty4886FQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfoote=
r">https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CAFdMc-07FW=
pV07b3WSz0U%3DuDNHXM19xgBTH%3DCpt%3DKvty4886FQ%40mail.gmail.com</a>.<br />

--94eb2c05f4da1c1eec05447df558--

.
