220 36851 <1cdb6300-7397-46d7-bce9-62e6e8dac40b@isocpp.org> article
Path: news.gmane.org!.POSTED!not-for-mail
From: inkwizytoryankes@gmail.com
Newsgroups: gmane.comp.lang.c++.isocpp.proposals
Subject: Re: String interpolation
Date: Fri, 9 Feb 2018 12:51:55 -0800 (PST)
Lines: 246
Approved: news@gmane.org
Message-ID: <1cdb6300-7397-46d7-bce9-62e6e8dac40b@isocpp.org>
References: <356d5835-f1bf-4699-94f5-0b2d3d0b9c0e@isocpp.org>
 <CAMD6iD9aT26x8GQHnQL+kuj3Rq8fVQSfYYFtvTnFidkf6jU_ag@mail.gmail.com>
 <25CCF885-86AD-4D51-8F5C-C46376D34DE0@gmail.com> <4890431.TR9UepuQra@tjmaciei-mobl1>
 <CALvx3hac77b6Z=EOWzKqynALi1-352OvY0dnnOer8rN6tfa01g@mail.gmail.com>
Reply-To: std-proposals@isocpp.org
NNTP-Posting-Host: blaine.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; 
	boundary="----=_Part_5425_1042536176.1518209515594"
X-Trace: blaine.gmane.org 1518209425 15848 195.159.176.226 (9 Feb 2018 20:50:25 GMT)
X-Complaints-To: usenet@blaine.gmane.org
NNTP-Posting-Date: Fri, 9 Feb 2018 20:50:25 +0000 (UTC)
To: ISO C++ Standard - Future Proposals <std-proposals@isocpp.org>
Original-X-From: std-proposals+bncBDDLTAGNTIBBB3ET7DJQKGQEZ7VCJJA@isocpp.org Fri Feb 09 21:50:21 2018
Return-path: <std-proposals+bncBDDLTAGNTIBBB3ET7DJQKGQEZ7VCJJA@isocpp.org>
Envelope-to: gclcip-std-proposals@m.gmane.org
Original-Received: from mail-vk0-f71.google.com ([209.85.213.71])
	by blaine.gmane.org with esmtp (Exim 4.84_2)
	(envelope-from <std-proposals+bncBDDLTAGNTIBBB3ET7DJQKGQEZ7VCJJA@isocpp.org>)
	id 1ekFcH-0002DW-Fh
	for gclcip-std-proposals@m.gmane.org; Fri, 09 Feb 2018 21:49:53 +0100
Original-Received: by mail-vk0-f71.google.com with SMTP id e71sf4968654vkd.4
        for <gclcip-std-proposals@m.gmane.org>; Fri, 09 Feb 2018 12:51:59 -0800 (PST)
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
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=MOYSZxYh+3mnV1FrQ58MhwQW076lWF41/693kk85Khs=;
        b=zxm3ukER+rac+sV7OW9UKBxVU6++ffOEFen+pFUYTaTcpF44KWD2vXTetjQMKhPBSc
         XMLP4Iq/rpVye1zVRPyHaK54xCD/9E7qC7huIXmOgexg/J81MH0HMjoCmdeCf0t8pUK/
         EZxI9OpXgqJQVKXyLGeDhMAjXGrZD4NIgp44Qk+aX00mR1r2SpumWCHJ/smDXGY2D5Eq
         AtcgGPwODwthSR9JR4807+cjCu6SSWVe7/kPadXd+A4mkGL8b1cn/v2S0z+2TopaI+cX
         lFA/YGkkC9kqHMbK4qQ8ZqDrIDxUHnSmPQ0TBFfuAOyL2VzKVY7dW9LBdrsvGK1o9BsS
         5NOQ==
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
         :list-post:list-help:list-archive:list-subscribe:list-unsubscribe;
        bh=MOYSZxYh+3mnV1FrQ58MhwQW076lWF41/693kk85Khs=;
        b=c70dMrgbgXIo/8nbUNKgyR/i0Tg9dcsKvWFeXoLlBp/t9o4y+2Q2I1zqHbwc/4z1z8
         SzZVReKp0Z3NDOKwPbpdRSpnHWWwy4f4OqdaQKvOJM4a7Vrmd/QbUoDO0pwgfKM0TzCD
         6ohtyMZaFxqenpgqQ1lOYoH/d6HUbSWaX5kofhhXJLi2IO5iOyydULjP3LUhyzArWhxY
         LW3nSYSgGbIC7O6YcxtbzoAtRU2uvQJc4ESoyyGAaYjeU/bokX6hIhVLBVRbZYAhtPmd
         vd7/HOBTJJhNvVnyn2lnEZm5Py+JupML5t0bYQGr5CfS+MylnXsrV23W1VrE5RKIcHYy
         rjVg==
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=MOYSZxYh+3mnV1FrQ58MhwQW076lWF41/693kk85Khs=;
        b=CGO7Wzke32fBNBDMHMfB6WCd77818oSiqXefiUJ8trKx3isRYILtbSu+AfM285q+Kn
         8nH+SR9nuVMtbk19Ez+lkgTh4wdTj2ulZ0RGy27A/Kk/kh0f/LI1PVo5hnY/yHrb99WI
         MljaR6z6n11oqq4MDh96fMobvLwPzpD6o3YUhq8awJq8Bz2BxYbPHM0caMBGfET6rWG/
         bUnJc+uk3Y3bG0RQ4rD/iB16wuzyapDueYpd56mryTh1ArB3/nGNBVUV5PPI2nHCk2X6
         CS21LoEGKFAxeb8mMiG90sa1SARRuGlUvc1YV9trX3RfkgIlzHlLMhy3gbYQJvssrJvh
         Yz9w==
X-Gm-Message-State: APf1xPBOu4VIrovyTaQW3ibiTUlKq8wYxoVw48nt2cqKmDTyRAL6GG1r
	dP+xXz3M97a3IzX3z1bYSL9Ghw==
X-Google-Smtp-Source: AH8x224o0gX0k6SQ0ZZUhLyUU3/e8I1Om56JGbSphVvj8yYHRuJCGVD71pG5zG7ggB4jp+87n99asw==
X-Received: by 10.31.67.211 with SMTP id q202mr2026025vka.42.1518209518894;
        Fri, 09 Feb 2018 12:51:58 -0800 (PST)
X-BeenThere: std-proposals@isocpp.org
Original-Received: by 10.31.185.211 with SMTP id j202ls4083224vkf.16.gmail; Fri, 09 Feb
 2018 12:51:56 -0800 (PST)
X-Received: by 10.31.65.193 with SMTP id o184mr330vka.9.1518209516115;
        Fri, 09 Feb 2018 12:51:56 -0800 (PST)
In-Reply-To: <CALvx3hac77b6Z=EOWzKqynALi1-352OvY0dnnOer8rN6tfa01g@mail.gmail.com>
X-Original-Sender: inkwizytoryankes@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: <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:36851
Archived-At: <http://permalink.gmane.org/gmane.comp.lang.c++.isocpp.proposals/36851>

------=_Part_5425_1042536176.1518209515594
Content-Type: multipart/alternative; 
	boundary="----=_Part_5426_372986613.1518209515595"

------=_Part_5426_372986613.1518209515595
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable



On Friday, February 9, 2018 at 9:08:29 PM UTC+1, Richard Hodges wrote:
>
> > I'm not saying your idea has no merit. I said that the proposal, as it=
=20
> was
> posted, has no future. Improve it
>
> Here's an idea. How about you approach this genuine desire to do a good=
=20
> thing more positively. I know you can be negative. Anyone can.=20
>
> I am interested to see how you can positively contribute to an idea that=
=20
> seeks to help us all.
>
>
=20
Minimal version than could be added to C++ is new string prefix `F`=20
(because we have `R`, `u`, `u8` and `U` already, and `$` is outside of=20
source characters) that enable mixing code with string literals.
As Marcel Kr=C3=BCger wrote, language could transform this string literal t=
o:
F"testA{a}test{{B}}"_x; =3D> operator""_x("testA"_x, a, "test{B}"_x); //usi=
ng=20
same postfix to parse sub-literals
FR"aa(x{b}y)aa"_x; =3D> operator""_x(R"aa(x)aa"_x, b, R"aa(y)aa"_x); //it=
=20
have precedence over `R` prefix



Rest will be implemented by library, this mean `F"a {5} b"` will not=20
compile because there is no matching operator. stl could add this operator=
=20
for `s` postfix, that will use `std::to_string` for conversing all=20
arguments:
template<typename... Parts>
std::string operator""s(Parts&&... p) { return std::to_string(std::forward<
Parts>(p)) + ...; }

int main()
{
    auto x =3D F"Test {{a}} =3D {10+5}"s; //x =3D=3D "Test {a} =3D 15"s
}
No iosteam, and even more it could if someone relay desire to have=20
localizations:

F"Test {356*10}"_loc("Prod {0} OK!", "fr") =3D=3D "Prod 3.560,00 OK!";

Only drawback is some template bloat but this is probably acceptable cost.

--=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/1cdb6300-7397-46d7-bce9-62e6e8dac40b%40isocpp.or=
g.

------=_Part_5426_372986613.1518209515595
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Friday, February 9, 2018 at 9:08:29 PM UTC+1, R=
ichard Hodges wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;ma=
rgin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=
=3D"auto">&gt;=C2=A0<span style=3D"font-family:sans-serif;font-size:12.8px"=
>I&#39;m not saying your idea has no merit. I said that the proposal, as it=
 was</span><br style=3D"font-family:sans-serif;font-size:12.8px"><span styl=
e=3D"font-family:sans-serif;font-size:12.8px">posted, has no future. Improv=
e it</span><div dir=3D"auto"><span style=3D"font-family:sans-serif;font-siz=
e:12.8px"><br></span></div><div dir=3D"auto"><span style=3D"font-family:san=
s-serif;font-size:12.8px">Here&#39;s an idea. How about you approach this g=
enuine desire to do a good thing more positively. I know you can be negativ=
e. Anyone can.=C2=A0</span></div><div dir=3D"auto"><span style=3D"font-fami=
ly:sans-serif;font-size:12.8px"><br></span></div><div dir=3D"auto"><span st=
yle=3D"font-family:sans-serif;font-size:12.8px">I am interested to see how =
you can positively contribute to an idea that seeks to help us all.</span><=
/div><br></div></blockquote><div><br>=C2=A0<br>Minimal version than could b=
e added to C++ is new string prefix `F` (because we have `R`, `u`, `u8` and=
 `U` already, and `$` is outside of source characters) that enable mixing c=
ode with string literals.<br>As Marcel Kr=C3=BCger wrote, language could tr=
ansform this string literal to:<br><div style=3D"background-color: rgb(250,=
 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border-w=
idth: 1px; overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D=
"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify">F</span><span style=3D"color: #080;" class=3D"st=
yled-by-prettify">&quot;testA{a}test{{B}}&quot;</span><span style=3D"color:=
 #000;" class=3D"styled-by-prettify">_x</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">;</span><span style=3D"color: #000;" class=3D"=
styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by=
-prettify">=3D&gt;</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">o=
perator</span><span style=3D"color: #080;" class=3D"styled-by-prettify">&qu=
ot;&quot;</span><span style=3D"color: #000;" class=3D"styled-by-prettify">_=
x</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(</span><=
span style=3D"color: #080;" class=3D"styled-by-prettify">&quot;testA&quot;<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify">_x</span><s=
pan style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> a</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify"> </span><span style=3D"color: #080;" class=3D=
"styled-by-prettify">&quot;test{B}&quot;</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify">_x</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">);</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> </span><span style=3D"color: #800;" class=3D"styled-by-pre=
ttify">//using same postfix to parse sub-literals</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"><br>FR</span><span style=3D"color: #=
080;" class=3D"styled-by-prettify">&quot;aa(x{b}y)aa&quot;</span><span styl=
e=3D"color: #000;" class=3D"styled-by-prettify">_x</span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">=3D&gt;</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-b=
y-prettify">operator</span><span style=3D"color: #080;" class=3D"styled-by-=
prettify">&quot;&quot;</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify">_x</span><span style=3D"color: #660;" class=3D"styled-by-pretti=
fy">(</span><span style=3D"color: #000;" class=3D"styled-by-prettify">R</sp=
an><span style=3D"color: #080;" class=3D"styled-by-prettify">&quot;aa(x)aa&=
quot;</span><span style=3D"color: #000;" class=3D"styled-by-prettify">_x</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span=
 style=3D"color: #000;" class=3D"styled-by-prettify"> b</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> R</span><span style=3D"color: #080;"=
 class=3D"styled-by-prettify">&quot;aa(y)aa&quot;</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify">_x</span><span style=3D"color: #660;=
" class=3D"styled-by-prettify">);</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #800;" class=3D"style=
d-by-prettify">//it have precedence over `R` prefix</span></div></code></di=
v><br><br><br>Rest will be implemented by library, this mean `F&quot;a {5} =
b&quot;` will not compile because there is no matching operator. stl could =
add this operator for `s` postfix, that will use `std::to_string` for conve=
rsing all arguments:<br><div style=3D"background-color: rgb(250, 250, 250);=
 border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; =
overflow-wrap: break-word;" class=3D"prettyprint"><code class=3D"prettyprin=
t"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"styl=
ed-by-prettify">template</span><span style=3D"color: #660;" class=3D"styled=
-by-prettify">&lt;</span><span style=3D"color: #008;" class=3D"styled-by-pr=
ettify">typename</span><span style=3D"color: #660;" class=3D"styled-by-pret=
tify">...</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> =
</span><span style=3D"color: #606;" class=3D"styled-by-prettify">Parts</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"><br>std</span><span s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">::</span><span style=3D"=
color: #008;" class=3D"styled-by-prettify">string</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;"=
 class=3D"styled-by-prettify">operator</span><span style=3D"color: #080;" c=
lass=3D"styled-by-prettify">&quot;&quot;</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify">s</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">(</span><span style=3D"color: #606;" class=3D"styled-b=
y-prettify">Parts</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">&amp;&amp;...</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> p</span><span style=3D"color: #660;" class=3D"styled-by-prettify=
">)</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"co=
lor: #008;" class=3D"styled-by-prettify">return</span><span style=3D"color:=
 #000;" class=3D"styled-by-prettify"> std</span><span style=3D"color: #660;=
" class=3D"styled-by-prettify">::</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify">to_string</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">(</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify">std</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">::</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
forward</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt=
;</span><span style=3D"color: #606;" class=3D"styled-by-prettify">Parts</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;(</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify">p</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">))</span><span style=3D"colo=
r: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;"=
 class=3D"styled-by-prettify">+</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">...;</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">}</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br><br></sp=
an><span style=3D"color: #008;" class=3D"styled-by-prettify">int</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> main</span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">()</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">{</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"><br>=C2=A0 =C2=A0 </span><span style=3D"color: #0=
08;" class=3D"styled-by-prettify">auto</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> x </span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> F</span><span style=3D"color: #080;" class=3D"styled-by-pret=
tify">&quot;Test {{a}} =3D {10+5}&quot;</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify">s</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"> </span><span style=3D"color: #800;" class=3D"styled-by-prettify=
">//x =3D=3D &quot;Test {a} =3D 15&quot;s</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"><br></span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">}</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"><br></span></div></code></div><code>No iosteam, and even mo=
re it could if someone relay desire to have localizations:<br><br><div styl=
e=3D"background-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187)=
; border-style: solid; border-width: 1px; overflow-wrap: break-word;" class=
=3D"prettyprint"><code class=3D"prettyprint"><div class=3D"subprettyprint">=
<span style=3D"color: #000;" class=3D"styled-by-prettify">F</span><span sty=
le=3D"color: #080;" class=3D"styled-by-prettify">&quot;Test {356*10}&quot;<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify">_loc</span>=
<span style=3D"color: #660;" class=3D"styled-by-prettify">(</span><span sty=
le=3D"color: #080;" class=3D"styled-by-prettify">&quot;Prod {0} OK!&quot;</=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #080;" class=3D"styled-by-prettify">&quot;fr&quot;</span><span s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">)</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">=3D=3D</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify"> </span><span style=3D"color: #080;" class=3D"=
styled-by-prettify">&quot;Prod 3.560,00 OK!&quot;</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify"><br></span></div></code></div><br>Only drawba=
ck is some template bloat but this is probably acceptable cost.<br></code><=
br></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/1cdb6300-7397-46d7-bce9-62e6e8dac40b%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/1cdb6300-7397-46d7-bce9-62e6e8dac40b=
%40isocpp.org</a>.<br />

------=_Part_5426_372986613.1518209515595--

------=_Part_5425_1042536176.1518209515594--

.
