Topic: Shortcoming in class template template parameter deduction.


Author: Bengt Gustafsson <bengt.gustafsson@beamways.com>
Date: Fri, 2 Nov 2018 04:31:59 -0700 (PDT)
Raw View
------=_Part_733_933791401.1541158319096
Content-Type: multipart/alternative;
 boundary="----=_Part_734_993899589.1541158319096"

------=_Part_734_993899589.1541158319096
Content-Type: text/plain; charset="UTF-8"

My naive understanding was that a class template with constructors should
be callable as if it was a function, returning an object of an appropriate
type.

This works but excludes the situation where you in the function case would
have to provide a subset of template parameter values yourself. For class
templates you have to provide all or none.

Here is an example:

template<typename T, typename R> void Foo(R r)
{
}

template<typename T, typename R> class Bar {
public:
 Bar(R r) {}
};

int main()
{
 Foo<int>(3.14);  // Works
 Bar<int>(3.14);  // Error
}


The Bar construction line does not compile on any of the main compilers,
which I think it should, just as Foo call does.

What is the good reason for not making this consistent?


(Godbolt: https://godbolt.org/z/b_L7bE)

--
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/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org.

------=_Part_734_993899589.1541158319096
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">My naive understanding was that a class template with cons=
tructors should be callable as if it was a function, returning an object of=
 an appropriate type.<div><br></div><div>This works but excludes the situat=
ion where you in the function case would have to provide a subset of templa=
te parameter values yourself. For class templates you have to provide all o=
r none.</div><div><br></div><div>Here is an example:</div><div><div style=
=3D"color: #000000;background-color: #fffffe;font-family: Consolas, " liber=
ation=3D"" mono",=3D"" courier,=3D"" monospace;font-weight:=3D"" normal;fon=
t-size:=3D"" 14px;line-height:=3D"" 19px;white-space:=3D"" pre;"=3D""><br><=
div class=3D"prettyprint" style=3D"background-color: rgb(250, 250, 250); bo=
rder-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; ove=
rflow-wrap: break-word;"><code class=3D"prettyprint"><div class=3D"subprett=
yprint"><span style=3D"color: #008;" class=3D"styled-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-prettify">typename</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> T</span><span styl=
e=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: #008;"=
 class=3D"styled-by-prettify">typename</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> R</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">&gt;</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prett=
ify">void</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> =
</span><span style=3D"color: #606;" class=3D"styled-by-prettify">Foo</span>=
<span style=3D"color: #660;" class=3D"styled-by-prettify">(</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify">R r</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">)</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">{</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"><br></span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">}</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"><br><br></span><span style=3D"color: #008;" class=3D"styled-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-prettify">typenam=
e</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> T</span>=
<span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #008;" class=3D"styled-by-prettify">typename</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> R</span><span style=3D"color: #660;"=
 class=3D"styled-by-prettify">&gt;</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">class</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify"=
>Bar</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">public</span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">:</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"><br>=C2=A0</span><span style=3D"color: #6=
06;" class=3D"styled-by-prettify">Bar</span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">(</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify">R r</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">{}</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><spa=
n style=3D"color: #660;" class=3D"styled-by-prettify">};</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><br><br></span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">int</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"> main</span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">()</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"><br></span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">{</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"><br>=C2=A0</span><span style=3D"color: #606;" class=3D"styled-b=
y-prettify">Foo</span><span style=3D"color: #080;" class=3D"styled-by-prett=
ify">&lt;int&gt;</span><span style=3D"color: #660;" class=3D"styled-by-pret=
tify">(</span><span style=3D"color: #066;" class=3D"styled-by-prettify">3.1=
4</span><span style=3D"color: #660;" class=3D"styled-by-prettify">);</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> =C2=A0</span><sp=
an style=3D"color: #800;" class=3D"styled-by-prettify">// Works</span><span=
 style=3D"color: #000;" class=3D"styled-by-prettify"><br>=C2=A0</span><span=
 style=3D"color: #606;" class=3D"styled-by-prettify">Bar</span><span style=
=3D"color: #080;" class=3D"styled-by-prettify">&lt;int&gt;</span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">(</span><span style=3D"colo=
r: #066;" class=3D"styled-by-prettify">3.14</span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">);</span><span style=3D"color: #000;" clas=
s=3D"styled-by-prettify"> =C2=A0</span><span style=3D"color: #800;" class=
=3D"styled-by-prettify">// Error</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br></span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">}</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"><br></span></div></code></div><br><br></div></div><div style=3D"co=
lor: #000000;background-color: #fffffe;font-family: Consolas, " liberation=
=3D"" mono",=3D"" courier,=3D"" monospace;font-weight:=3D"" normal;font-siz=
e:=3D"" 14px;line-height:=3D"" 19px;white-space:=3D"" pre;"=3D"">The Bar co=
nstruction line does not compile on any of the main compilers, which I thin=
k it should, just as Foo call does.</div><div style=3D"color: #000000;backg=
round-color: #fffffe;font-family: Consolas, " liberation=3D"" mono",=3D"" c=
ourier,=3D"" monospace;font-weight:=3D"" normal;font-size:=3D"" 14px;line-h=
eight:=3D"" 19px;white-space:=3D"" pre;"=3D""><br></div><div style=3D"color=
: #000000;background-color: #fffffe;font-family: Consolas, " liberation=3D"=
" mono",=3D"" courier,=3D"" monospace;font-weight:=3D"" normal;font-size:=
=3D"" 14px;line-height:=3D"" 19px;white-space:=3D"" pre;"=3D"">What is the =
good reason for not making this consistent?</div><div><br></div><div><br></=
div><div>(Godbolt:=C2=A0https://godbolt.org/z/b_L7bE)</div><div><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/945c77c8-18e4-40fe-8880-83346219bec4%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4=
%40isocpp.org</a>.<br />

------=_Part_734_993899589.1541158319096--

------=_Part_733_933791401.1541158319096--

.


Author: Nicolas Lesser <blitzrakete@gmail.com>
Date: Fri, 2 Nov 2018 12:51:42 +0100
Raw View
--00000000000053cfaf0579ad29ca
Content-Type: text/plain; charset="UTF-8"

See also P1021, "Filling holes in Class Template Argument Deduction".

https://wg21.link/p1021

On Fri, Nov 2, 2018, 12:32 PM Bengt Gustafsson <
bengt.gustafsson@beamways.com wrote:

> My naive understanding was that a class template with constructors should
> be callable as if it was a function, returning an object of an appropriate
> type.
>
> This works but excludes the situation where you in the function case would
> have to provide a subset of template parameter values yourself. For class
> templates you have to provide all or none.
>
> Here is an example:
>
> template<typename T, typename R> void Foo(R r)
> {
> }
>
> template<typename T, typename R> class Bar {
> public:
>  Bar(R r) {}
> };
>
> int main()
> {
>  Foo<int>(3.14);  // Works
>  Bar<int>(3.14);  // Error
> }
>
>
> The Bar construction line does not compile on any of the main compilers,
> which I think it should, just as Foo call does.
>
> What is the good reason for not making this consistent?
>
>
> (Godbolt: https://godbolt.org/z/b_L7bE)
>
> --
> 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/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org
> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org?utm_medium=email&utm_source=footer>
> .
>

--
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/CALmDwq0cyTwdkZDjmqUn3Vd7f1TtBjVmr9qTBAqvXFEf4%3DgU3g%40mail.gmail.com.

--00000000000053cfaf0579ad29ca
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"auto">See also P1021, &quot;Filling holes in Class Template Arg=
ument Deduction&quot;.<div dir=3D"auto"><br></div><div dir=3D"auto"><a href=
=3D"https://wg21.link/p1021">https://wg21.link/p1021</a></div></div><br><di=
v class=3D"gmail_quote"><div dir=3D"ltr">On Fri, Nov 2, 2018, 12:32 PM Beng=
t Gustafsson &lt;<a href=3D"mailto:bengt.gustafsson@beamways.com">bengt.gus=
tafsson@beamways.com</a> wrote:<br></div><blockquote class=3D"gmail_quote" =
style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><di=
v dir=3D"ltr">My naive understanding was that a class template with constru=
ctors should be callable as if it was a function, returning an object of an=
 appropriate type.<div><br></div><div>This works but excludes the situation=
 where you in the function case would have to provide a subset of template =
parameter values yourself. For class templates you have to provide all or n=
one.</div><div><br></div><div>Here is an example:</div><div><div><br><div c=
lass=3D"m_-6663081950117273378prettyprint" style=3D"background-color:rgb(25=
0,250,250);border-color:rgb(187,187,187);border-style:solid;border-width:1p=
x"><code class=3D"m_-6663081950117273378prettyprint"><div class=3D"m_-66630=
81950117273378subprettyprint"><span style=3D"color:#008" class=3D"m_-666308=
1950117273378styled-by-prettify">template</span><span style=3D"color:#660" =
class=3D"m_-6663081950117273378styled-by-prettify">&lt;</span><span style=
=3D"color:#008" class=3D"m_-6663081950117273378styled-by-prettify">typename=
</span><span style=3D"color:#000" class=3D"m_-6663081950117273378styled-by-=
prettify"> T</span><span style=3D"color:#660" class=3D"m_-66630819501172733=
78styled-by-prettify">,</span><span style=3D"color:#000" class=3D"m_-666308=
1950117273378styled-by-prettify"> </span><span style=3D"color:#008" class=
=3D"m_-6663081950117273378styled-by-prettify">typename</span><span style=3D=
"color:#000" class=3D"m_-6663081950117273378styled-by-prettify"> R</span><s=
pan style=3D"color:#660" class=3D"m_-6663081950117273378styled-by-prettify"=
>&gt;</span><span style=3D"color:#000" class=3D"m_-6663081950117273378style=
d-by-prettify"> </span><span style=3D"color:#008" class=3D"m_-6663081950117=
273378styled-by-prettify">void</span><span style=3D"color:#000" class=3D"m_=
-6663081950117273378styled-by-prettify"> </span><span style=3D"color:#606" =
class=3D"m_-6663081950117273378styled-by-prettify">Foo</span><span style=3D=
"color:#660" class=3D"m_-6663081950117273378styled-by-prettify">(</span><sp=
an style=3D"color:#000" class=3D"m_-6663081950117273378styled-by-prettify">=
R r</span><span style=3D"color:#660" class=3D"m_-6663081950117273378styled-=
by-prettify">)</span><span style=3D"color:#000" class=3D"m_-666308195011727=
3378styled-by-prettify"><br></span><span style=3D"color:#660" class=3D"m_-6=
663081950117273378styled-by-prettify">{</span><span style=3D"color:#000" cl=
ass=3D"m_-6663081950117273378styled-by-prettify"><br></span><span style=3D"=
color:#660" class=3D"m_-6663081950117273378styled-by-prettify">}</span><spa=
n style=3D"color:#000" class=3D"m_-6663081950117273378styled-by-prettify"><=
br><br></span><span style=3D"color:#008" class=3D"m_-6663081950117273378sty=
led-by-prettify">template</span><span style=3D"color:#660" class=3D"m_-6663=
081950117273378styled-by-prettify">&lt;</span><span style=3D"color:#008" cl=
ass=3D"m_-6663081950117273378styled-by-prettify">typename</span><span style=
=3D"color:#000" class=3D"m_-6663081950117273378styled-by-prettify"> T</span=
><span style=3D"color:#660" class=3D"m_-6663081950117273378styled-by-pretti=
fy">,</span><span style=3D"color:#000" class=3D"m_-6663081950117273378style=
d-by-prettify"> </span><span style=3D"color:#008" class=3D"m_-6663081950117=
273378styled-by-prettify">typename</span><span style=3D"color:#000" class=
=3D"m_-6663081950117273378styled-by-prettify"> R</span><span style=3D"color=
:#660" class=3D"m_-6663081950117273378styled-by-prettify">&gt;</span><span =
style=3D"color:#000" class=3D"m_-6663081950117273378styled-by-prettify"> </=
span><span style=3D"color:#008" class=3D"m_-6663081950117273378styled-by-pr=
ettify">class</span><span style=3D"color:#000" class=3D"m_-6663081950117273=
378styled-by-prettify"> </span><span style=3D"color:#606" class=3D"m_-66630=
81950117273378styled-by-prettify">Bar</span><span style=3D"color:#000" clas=
s=3D"m_-6663081950117273378styled-by-prettify"> </span><span style=3D"color=
:#660" class=3D"m_-6663081950117273378styled-by-prettify">{</span><span sty=
le=3D"color:#000" class=3D"m_-6663081950117273378styled-by-prettify"><br></=
span><span style=3D"color:#008" class=3D"m_-6663081950117273378styled-by-pr=
ettify">public</span><span style=3D"color:#660" class=3D"m_-666308195011727=
3378styled-by-prettify">:</span><span style=3D"color:#000" class=3D"m_-6663=
081950117273378styled-by-prettify"><br>=C2=A0</span><span style=3D"color:#6=
06" class=3D"m_-6663081950117273378styled-by-prettify">Bar</span><span styl=
e=3D"color:#660" class=3D"m_-6663081950117273378styled-by-prettify">(</span=
><span style=3D"color:#000" class=3D"m_-6663081950117273378styled-by-pretti=
fy">R r</span><span style=3D"color:#660" class=3D"m_-6663081950117273378sty=
led-by-prettify">)</span><span style=3D"color:#000" class=3D"m_-66630819501=
17273378styled-by-prettify"> </span><span style=3D"color:#660" class=3D"m_-=
6663081950117273378styled-by-prettify">{}</span><span style=3D"color:#000" =
class=3D"m_-6663081950117273378styled-by-prettify"><br></span><span style=
=3D"color:#660" class=3D"m_-6663081950117273378styled-by-prettify">};</span=
><span style=3D"color:#000" class=3D"m_-6663081950117273378styled-by-pretti=
fy"><br><br></span><span style=3D"color:#008" class=3D"m_-66630819501172733=
78styled-by-prettify">int</span><span style=3D"color:#000" class=3D"m_-6663=
081950117273378styled-by-prettify"> main</span><span style=3D"color:#660" c=
lass=3D"m_-6663081950117273378styled-by-prettify">()</span><span style=3D"c=
olor:#000" class=3D"m_-6663081950117273378styled-by-prettify"><br></span><s=
pan style=3D"color:#660" class=3D"m_-6663081950117273378styled-by-prettify"=
>{</span><span style=3D"color:#000" class=3D"m_-6663081950117273378styled-b=
y-prettify"><br>=C2=A0</span><span style=3D"color:#606" class=3D"m_-6663081=
950117273378styled-by-prettify">Foo</span><span style=3D"color:#080" class=
=3D"m_-6663081950117273378styled-by-prettify">&lt;int&gt;</span><span style=
=3D"color:#660" class=3D"m_-6663081950117273378styled-by-prettify">(</span>=
<span style=3D"color:#066" class=3D"m_-6663081950117273378styled-by-prettif=
y">3.14</span><span style=3D"color:#660" class=3D"m_-6663081950117273378sty=
led-by-prettify">);</span><span style=3D"color:#000" class=3D"m_-6663081950=
117273378styled-by-prettify"> =C2=A0</span><span style=3D"color:#800" class=
=3D"m_-6663081950117273378styled-by-prettify">// Works</span><span style=3D=
"color:#000" class=3D"m_-6663081950117273378styled-by-prettify"><br>=C2=A0<=
/span><span style=3D"color:#606" class=3D"m_-6663081950117273378styled-by-p=
rettify">Bar</span><span style=3D"color:#080" class=3D"m_-66630819501172733=
78styled-by-prettify">&lt;int&gt;</span><span style=3D"color:#660" class=3D=
"m_-6663081950117273378styled-by-prettify">(</span><span style=3D"color:#06=
6" class=3D"m_-6663081950117273378styled-by-prettify">3.14</span><span styl=
e=3D"color:#660" class=3D"m_-6663081950117273378styled-by-prettify">);</spa=
n><span style=3D"color:#000" class=3D"m_-6663081950117273378styled-by-prett=
ify"> =C2=A0</span><span style=3D"color:#800" class=3D"m_-66630819501172733=
78styled-by-prettify">// Error</span><span style=3D"color:#000" class=3D"m_=
-6663081950117273378styled-by-prettify"><br></span><span style=3D"color:#66=
0" class=3D"m_-6663081950117273378styled-by-prettify">}</span><span style=
=3D"color:#000" class=3D"m_-6663081950117273378styled-by-prettify"><br></sp=
an></div></code></div><br><br></div></div><div>The Bar construction line do=
es not compile on any of the main compilers, which I think it should, just =
as Foo call does.</div><div><br></div><div>What is the good reason for not =
making this consistent?</div><div><br></div><div><br></div><div>(Godbolt:=
=C2=A0<a href=3D"https://godbolt.org/z/b_L7bE" target=3D"_blank" rel=3D"nor=
eferrer">https://godbolt.org/z/b_L7bE</a>)</div><div><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" target=3D"_=
blank" rel=3D"noreferrer">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" rel=3D"noreferrer">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/945c77c8-18e4-40fe-8880-83346219bec4%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" target=3D"_blank" =
rel=3D"noreferrer">https://groups.google.com/a/isocpp.org/d/msgid/std-propo=
sals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org</a>.<br>
</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/CALmDwq0cyTwdkZDjmqUn3Vd7f1TtBjVmr9qT=
BAqvXFEf4%3DgU3g%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">h=
ttps://groups.google.com/a/isocpp.org/d/msgid/std-proposals/CALmDwq0cyTwdkZ=
DjmqUn3Vd7f1TtBjVmr9qTBAqvXFEf4%3DgU3g%40mail.gmail.com</a>.<br />

--00000000000053cfaf0579ad29ca--

.


Author: Bengt Gustafsson <bengt.gustafsson@beamways.com>
Date: Fri, 2 Nov 2018 05:42:14 -0700 (PDT)
Raw View
------=_Part_728_456093651.1541162534464
Content-Type: multipart/alternative;
 boundary="----=_Part_729_1671491737.1541162534464"

------=_Part_729_1671491737.1541162534464
Content-Type: text/plain; charset="UTF-8"

Yes, my case seems to fall under the section "Class Template Argument
Deduction and partial template argument lists" in P1021. Lets hope it
passes!

BTW: It does work if I add a deduction guide with the exact same parameter
list as the constructor, in this case:

template<typename T, typename R> Bar(R r) -> Bar<T, R>;

This seems quite strange as we add the constructor we already had and
change the behaviour!


Den fredag 2 november 2018 kl. 12:51:55 UTC+1 skrev Nicolas Lesser:
>
> See also P1021, "Filling holes in Class Template Argument Deduction".
>
> https://wg21.link/p1021
>
> On Fri, Nov 2, 2018, 12:32 PM Bengt Gustafsson <bengt.gu...@beamways.com
> <javascript:> wrote:
>
>> My naive understanding was that a class template with constructors should
>> be callable as if it was a function, returning an object of an appropriate
>> type.
>>
>> This works but excludes the situation where you in the function case
>> would have to provide a subset of template parameter values yourself. For
>> class templates you have to provide all or none.
>>
>> Here is an example:
>>
>> template<typename T, typename R> void Foo(R r)
>> {
>> }
>>
>> template<typename T, typename R> class Bar {
>> public:
>>  Bar(R r) {}
>> };
>>
>> int main()
>> {
>>  Foo<int>(3.14);  // Works
>>  Bar<int>(3.14);  // Error
>> }
>>
>>
>> The Bar construction line does not compile on any of the main compilers,
>> which I think it should, just as Foo call does.
>>
>> What is the good reason for not making this consistent?
>>
>>
>> (Godbolt: https://godbolt.org/z/b_L7bE)
>>
>> --
>> 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 <javascript:>.
>> To post to this group, send email to std-pr...@isocpp.org <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org
>> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org?utm_medium=email&utm_source=footer>
>> .
>>
>

--
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/6083bb7d-fc99-459c-bfbc-045c15ec53b1%40isocpp.org.

------=_Part_729_1671491737.1541162534464
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Yes, my case seems to fall under the section &quot;<span s=
tyle=3D"color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font=
-size: 16px;">Class Template Argument Deduction and partial template argume=
nt lists&quot; in P1021. Lets hope it passes!</span><div><font color=3D"#00=
0000" face=3D"Times New Roman"><span style=3D"font-size: 16px;"><br></span>=
</font></div><div><font color=3D"#000000" face=3D"Times New Roman"><span st=
yle=3D"font-size: 16px;">BTW: It does work if I add a deduction guide with =
the exact same parameter list as the constructor, in this case:</span></fon=
t></div><div><font color=3D"#000000" face=3D"Times New Roman"><span style=
=3D"font-size: 16px;"><br></span></font></div><div><font color=3D"#000000" =
face=3D"Times New Roman"><span style=3D"font-size: 16px;">template&lt;typen=
ame T, typename R&gt; Bar(R r) -&gt; Bar&lt;T, R&gt;;</span></font></div><d=
iv><font color=3D"#000000" face=3D"Times New Roman"><span style=3D"font-siz=
e: 16px;"><br></span></font></div><div><font color=3D"#000000" face=3D"Time=
s New Roman"><span style=3D"font-size: 16px;">This seems quite strange as w=
e add the constructor we already had and change the behaviour!</span></font=
></div><div><font color=3D"#000000" face=3D"Times New Roman"><span style=3D=
"font-size: 16px;"><br></span></font><br>Den fredag 2 november 2018 kl. 12:=
51:55 UTC+1 skrev Nicolas Lesser:<blockquote class=3D"gmail_quote" style=3D=
"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex=
;"><div dir=3D"auto">See also P1021, &quot;Filling holes in Class Template =
Argument Deduction&quot;.<div dir=3D"auto"><br></div><div dir=3D"auto"><a h=
ref=3D"https://wg21.link/p1021" target=3D"_blank" rel=3D"nofollow" onmoused=
own=3D"this.href=3D&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fwg21.=
link%2Fp1021\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFgZtRmTj0PtvE4imAvA5l-=
nczDyA&#39;;return true;" onclick=3D"this.href=3D&#39;https://www.google.co=
m/url?q\x3dhttps%3A%2F%2Fwg21.link%2Fp1021\x26sa\x3dD\x26sntz\x3d1\x26usg\x=
3dAFQjCNFgZtRmTj0PtvE4imAvA5l-nczDyA&#39;;return true;">https://wg21.link/p=
1021</a></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr">On Fri,=
 Nov 2, 2018, 12:32 PM Bengt Gustafsson &lt;<a href=3D"javascript:" target=
=3D"_blank" gdf-obfuscated-mailto=3D"gOxWufP0BgAJ" rel=3D"nofollow" onmouse=
down=3D"this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.hre=
f=3D&#39;javascript:&#39;;return true;">bengt.gu...@beamways.com</a> wrote:=
<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bord=
er-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr">My naive understa=
nding was that a class template with constructors should be callable as if =
it was a function, returning an object of an appropriate type.<div><br></di=
v><div>This works but excludes the situation where you in the function case=
 would have to provide a subset of template parameter values yourself. For =
class templates you have to provide all or none.</div><div><br></div><div>H=
ere is an example:</div><div><div><br><div style=3D"background-color:rgb(25=
0,250,250);border-color:rgb(187,187,187);border-style:solid;border-width:1p=
x"><code><div><span style=3D"color:#008">template</span><span style=3D"colo=
r:#660">&lt;</span><span style=3D"color:#008">typename</span><span style=3D=
"color:#000"> T</span><span style=3D"color:#660">,</span><span style=3D"col=
or:#000"> </span><span style=3D"color:#008">typename</span><span style=3D"c=
olor:#000"> R</span><span style=3D"color:#660">&gt;</span><span style=3D"co=
lor:#000"> </span><span style=3D"color:#008">void</span><span style=3D"colo=
r:#000"> </span><span style=3D"color:#606">Foo</span><span style=3D"color:#=
660">(</span><span style=3D"color:#000">R r</span><span style=3D"color:#660=
">)</span><span style=3D"color:#000"><br></span><span style=3D"color:#660">=
{</span><span style=3D"color:#000"><br></span><span style=3D"color:#660">}<=
/span><span style=3D"color:#000"><br><br></span><span style=3D"color:#008">=
template</span><span style=3D"color:#660">&lt;</span><span style=3D"color:#=
008">typename</span><span style=3D"color:#000"> T</span><span style=3D"colo=
r:#660">,</span><span style=3D"color:#000"> </span><span style=3D"color:#00=
8">typename</span><span style=3D"color:#000"> R</span><span style=3D"color:=
#660">&gt;</span><span style=3D"color:#000"> </span><span style=3D"color:#0=
08">class</span><span style=3D"color:#000"> </span><span style=3D"color:#60=
6">Bar</span><span style=3D"color:#000"> </span><span style=3D"color:#660">=
{</span><span style=3D"color:#000"><br></span><span style=3D"color:#008">pu=
blic</span><span style=3D"color:#660">:</span><span style=3D"color:#000"><b=
r>=C2=A0</span><span style=3D"color:#606">Bar</span><span style=3D"color:#6=
60">(</span><span style=3D"color:#000">R r</span><span style=3D"color:#660"=
>)</span><span style=3D"color:#000"> </span><span style=3D"color:#660">{}</=
span><span style=3D"color:#000"><br></span><span style=3D"color:#660">};</s=
pan><span style=3D"color:#000"><br><br></span><span style=3D"color:#008">in=
t</span><span style=3D"color:#000"> main</span><span style=3D"color:#660">(=
)</span><span style=3D"color:#000"><br></span><span style=3D"color:#660">{<=
/span><span style=3D"color:#000"><br>=C2=A0</span><span style=3D"color:#606=
">Foo</span><span style=3D"color:#080">&lt;int&gt;</span><span style=3D"col=
or:#660">(</span><span style=3D"color:#066">3.14</span><span style=3D"color=
:#660">);</span><span style=3D"color:#000"> =C2=A0</span><span style=3D"col=
or:#800">// Works</span><span style=3D"color:#000"><br>=C2=A0</span><span s=
tyle=3D"color:#606">Bar</span><span style=3D"color:#080">&lt;int&gt;</span>=
<span style=3D"color:#660">(</span><span style=3D"color:#066">3.14</span><s=
pan style=3D"color:#660">);</span><span style=3D"color:#000"> =C2=A0</span>=
<span style=3D"color:#800">// Error</span><span style=3D"color:#000"><br></=
span><span style=3D"color:#660">}</span><span style=3D"color:#000"><br></sp=
an></div></code></div><br><br></div></div><div>The Bar construction line do=
es not compile on any of the main compilers, which I think it should, just =
as Foo call does.</div><div><br></div><div>What is the good reason for not =
making this consistent?</div><div><br></div><div><br></div><div>(Godbolt:=
=C2=A0<a href=3D"https://godbolt.org/z/b_L7bE" rel=3D"nofollow" target=3D"_=
blank" onmousedown=3D"this.href=3D&#39;https://www.google.com/url?q\x3dhttp=
s%3A%2F%2Fgodbolt.org%2Fz%2Fb_L7bE\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCN=
GaG-4izRVkOelX4V6AmkmmlY3zKA&#39;;return true;" onclick=3D"this.href=3D&#39=
;https://www.google.com/url?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fz%2Fb_L7bE\x26=
sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGaG-4izRVkOelX4V6AmkmmlY3zKA&#39;;retu=
rn true;">https://godbolt.org/<wbr>z/b_L7bE</a>)</div><div><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"javascript:" rel=3D"nofollow" target=3D"_blank" gdf-obfu=
scated-mailto=3D"gOxWufP0BgAJ" onmousedown=3D"this.href=3D&#39;javascript:&=
#39;;return true;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true=
;">std-proposal...@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"javascript:" rel=3D"nofollo=
w" target=3D"_blank" gdf-obfuscated-mailto=3D"gOxWufP0BgAJ" onmousedown=3D"=
this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39=
;javascript:&#39;;return true;">std-pr...@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/945c77c8-18e4-40fe-8880-83346219bec4%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" rel=3D"nofollow" t=
arget=3D"_blank" onmousedown=3D"this.href=3D&#39;https://groups.google.com/=
a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40i=
socpp.org?utm_medium\x3demail\x26utm_source\x3dfooter&#39;;return true;" on=
click=3D"this.href=3D&#39;https://groups.google.com/a/isocpp.org/d/msgid/st=
d-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org?utm_medium\x3=
demail\x26utm_source\x3dfooter&#39;;return true;">https://groups.google.com=
/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/945c77c8-18e4-40fe-<wbr>8880-=
83346219bec4%40isocpp.org</a><wbr>.<br>
</blockquote></div>
</blockquote></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/6083bb7d-fc99-459c-bfbc-045c15ec53b1%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/6083bb7d-fc99-459c-bfbc-045c15ec53b1=
%40isocpp.org</a>.<br />

------=_Part_729_1671491737.1541162534464--

------=_Part_728_456093651.1541162534464--

.


Author: Bengt Gustafsson <bengt.gustafsson@beamways.com>
Date: Fri, 2 Nov 2018 06:55:41 -0700 (PDT)
Raw View
------=_Part_831_2089697636.1541166941075
Content-Type: multipart/alternative;
 boundary="----=_Part_832_478475088.1541166941075"

------=_Part_832_478475088.1541166941075
Content-Type: text/plain; charset="UTF-8"

Yes, my case seems to fall under the section "Class Template Argument
Deduction and partial template argument lists" in P1021. Lets hope it
passes!

Den fredag 2 november 2018 kl. 12:51:55 UTC+1 skrev Nicolas Lesser:
>
> See also P1021, "Filling holes in Class Template Argument Deduction".
>
> https://wg21.link/p1021
>
> On Fri, Nov 2, 2018, 12:32 PM Bengt Gustafsson <bengt.gu...@beamways.com
> <javascript:> wrote:
>
>> My naive understanding was that a class template with constructors should
>> be callable as if it was a function, returning an object of an appropriate
>> type.
>>
>> This works but excludes the situation where you in the function case
>> would have to provide a subset of template parameter values yourself. For
>> class templates you have to provide all or none.
>>
>> Here is an example:
>>
>> template<typename T, typename R> void Foo(R r)
>> {
>> }
>>
>> template<typename T, typename R> class Bar {
>> public:
>>  Bar(R r) {}
>> };
>>
>> int main()
>> {
>>  Foo<int>(3.14);  // Works
>>  Bar<int>(3.14);  // Error
>> }
>>
>>
>> The Bar construction line does not compile on any of the main compilers,
>> which I think it should, just as Foo call does.
>>
>> What is the good reason for not making this consistent?
>>
>>
>> (Godbolt: https://godbolt.org/z/b_L7bE)
>>
>> --
>> 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 <javascript:>.
>> To post to this group, send email to std-pr...@isocpp.org <javascript:>.
>> To view this discussion on the web visit
>> https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org
>> <https://groups.google.com/a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org?utm_medium=email&utm_source=footer>
>> .
>>
>

--
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/6824aaf9-11a6-4502-853c-60226d10c286%40isocpp.org.

------=_Part_832_478475088.1541166941075
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Yes, my case seems to fall under the section &quot;<span s=
tyle=3D"color: rgb(0, 0, 0); font-family: &quot;Times New Roman&quot;; font=
-size: 16px;">Class Template Argument Deduction and partial template argume=
nt lists&quot; in P1021. Lets hope it passes!</span><br><br>Den fredag 2 no=
vember 2018 kl. 12:51:55 UTC+1 skrev Nicolas Lesser:<blockquote class=3D"gm=
ail_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc soli=
d;padding-left: 1ex;"><div dir=3D"auto">See also P1021, &quot;Filling holes=
 in Class Template Argument Deduction&quot;.<div dir=3D"auto"><br></div><di=
v dir=3D"auto"><a href=3D"https://wg21.link/p1021" target=3D"_blank" rel=3D=
"nofollow" onmousedown=3D"this.href=3D&#39;https://www.google.com/url?q\x3d=
https%3A%2F%2Fwg21.link%2Fp1021\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNFgZ=
tRmTj0PtvE4imAvA5l-nczDyA&#39;;return true;" onclick=3D"this.href=3D&#39;ht=
tps://www.google.com/url?q\x3dhttps%3A%2F%2Fwg21.link%2Fp1021\x26sa\x3dD\x2=
6sntz\x3d1\x26usg\x3dAFQjCNFgZtRmTj0PtvE4imAvA5l-nczDyA&#39;;return true;">=
https://wg21.link/p1021</a></div></div><br><div class=3D"gmail_quote"><div =
dir=3D"ltr">On Fri, Nov 2, 2018, 12:32 PM Bengt Gustafsson &lt;<a href=3D"j=
avascript:" target=3D"_blank" gdf-obfuscated-mailto=3D"gOxWufP0BgAJ" rel=3D=
"nofollow" onmousedown=3D"this.href=3D&#39;javascript:&#39;;return true;" o=
nclick=3D"this.href=3D&#39;javascript:&#39;;return true;">bengt.gu...@beamw=
ays.com</a> wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"marg=
in:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"=
>My naive understanding was that a class template with constructors should =
be callable as if it was a function, returning an object of an appropriate =
type.<div><br></div><div>This works but excludes the situation where you in=
 the function case would have to provide a subset of template parameter val=
ues yourself. For class templates you have to provide all or none.</div><di=
v><br></div><div>Here is an example:</div><div><div><br><div style=3D"backg=
round-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:sol=
id;border-width:1px"><code><div><span style=3D"color:#008">template</span><=
span style=3D"color:#660">&lt;</span><span style=3D"color:#008">typename</s=
pan><span style=3D"color:#000"> T</span><span style=3D"color:#660">,</span>=
<span style=3D"color:#000"> </span><span style=3D"color:#008">typename</spa=
n><span style=3D"color:#000"> R</span><span style=3D"color:#660">&gt;</span=
><span style=3D"color:#000"> </span><span style=3D"color:#008">void</span><=
span style=3D"color:#000"> </span><span style=3D"color:#606">Foo</span><spa=
n style=3D"color:#660">(</span><span style=3D"color:#000">R r</span><span s=
tyle=3D"color:#660">)</span><span style=3D"color:#000"><br></span><span sty=
le=3D"color:#660">{</span><span style=3D"color:#000"><br></span><span style=
=3D"color:#660">}</span><span style=3D"color:#000"><br><br></span><span sty=
le=3D"color:#008">template</span><span style=3D"color:#660">&lt;</span><spa=
n style=3D"color:#008">typename</span><span style=3D"color:#000"> T</span><=
span style=3D"color:#660">,</span><span style=3D"color:#000"> </span><span =
style=3D"color:#008">typename</span><span style=3D"color:#000"> R</span><sp=
an style=3D"color:#660">&gt;</span><span style=3D"color:#000"> </span><span=
 style=3D"color:#008">class</span><span style=3D"color:#000"> </span><span =
style=3D"color:#606">Bar</span><span style=3D"color:#000"> </span><span sty=
le=3D"color:#660">{</span><span style=3D"color:#000"><br></span><span style=
=3D"color:#008">public</span><span style=3D"color:#660">:</span><span style=
=3D"color:#000"><br>=C2=A0</span><span style=3D"color:#606">Bar</span><span=
 style=3D"color:#660">(</span><span style=3D"color:#000">R r</span><span st=
yle=3D"color:#660">)</span><span style=3D"color:#000"> </span><span style=
=3D"color:#660">{}</span><span style=3D"color:#000"><br></span><span style=
=3D"color:#660">};</span><span style=3D"color:#000"><br><br></span><span st=
yle=3D"color:#008">int</span><span style=3D"color:#000"> main</span><span s=
tyle=3D"color:#660">()</span><span style=3D"color:#000"><br></span><span st=
yle=3D"color:#660">{</span><span style=3D"color:#000"><br>=C2=A0</span><spa=
n style=3D"color:#606">Foo</span><span style=3D"color:#080">&lt;int&gt;</sp=
an><span style=3D"color:#660">(</span><span style=3D"color:#066">3.14</span=
><span style=3D"color:#660">);</span><span style=3D"color:#000"> =C2=A0</sp=
an><span style=3D"color:#800">// Works</span><span style=3D"color:#000"><br=
>=C2=A0</span><span style=3D"color:#606">Bar</span><span style=3D"color:#08=
0">&lt;int&gt;</span><span style=3D"color:#660">(</span><span style=3D"colo=
r:#066">3.14</span><span style=3D"color:#660">);</span><span style=3D"color=
:#000"> =C2=A0</span><span style=3D"color:#800">// Error</span><span style=
=3D"color:#000"><br></span><span style=3D"color:#660">}</span><span style=
=3D"color:#000"><br></span></div></code></div><br><br></div></div><div>The =
Bar construction line does not compile on any of the main compilers, which =
I think it should, just as Foo call does.</div><div><br></div><div>What is =
the good reason for not making this consistent?</div><div><br></div><div><b=
r></div><div>(Godbolt:=C2=A0<a href=3D"https://godbolt.org/z/b_L7bE" rel=3D=
"nofollow" target=3D"_blank" onmousedown=3D"this.href=3D&#39;https://www.go=
ogle.com/url?q\x3dhttps%3A%2F%2Fgodbolt.org%2Fz%2Fb_L7bE\x26sa\x3dD\x26sntz=
\x3d1\x26usg\x3dAFQjCNGaG-4izRVkOelX4V6AmkmmlY3zKA&#39;;return true;" oncli=
ck=3D"this.href=3D&#39;https://www.google.com/url?q\x3dhttps%3A%2F%2Fgodbol=
t.org%2Fz%2Fb_L7bE\x26sa\x3dD\x26sntz\x3d1\x26usg\x3dAFQjCNGaG-4izRVkOelX4V=
6AmkmmlY3zKA&#39;;return true;">https://godbolt.org/<wbr>z/b_L7bE</a>)</div=
><div><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"javascript:" rel=3D"nofollow" target=3D"_blank" gdf-obfu=
scated-mailto=3D"gOxWufP0BgAJ" onmousedown=3D"this.href=3D&#39;javascript:&=
#39;;return true;" onclick=3D"this.href=3D&#39;javascript:&#39;;return true=
;">std-proposal...@<wbr>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"javascript:" rel=3D"nofollo=
w" target=3D"_blank" gdf-obfuscated-mailto=3D"gOxWufP0BgAJ" onmousedown=3D"=
this.href=3D&#39;javascript:&#39;;return true;" onclick=3D"this.href=3D&#39=
;javascript:&#39;;return true;">std-pr...@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/945c77c8-18e4-40fe-8880-83346219bec4%=
40isocpp.org?utm_medium=3Demail&amp;utm_source=3Dfooter" rel=3D"nofollow" t=
arget=3D"_blank" onmousedown=3D"this.href=3D&#39;https://groups.google.com/=
a/isocpp.org/d/msgid/std-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40i=
socpp.org?utm_medium\x3demail\x26utm_source\x3dfooter&#39;;return true;" on=
click=3D"this.href=3D&#39;https://groups.google.com/a/isocpp.org/d/msgid/st=
d-proposals/945c77c8-18e4-40fe-8880-83346219bec4%40isocpp.org?utm_medium\x3=
demail\x26utm_source\x3dfooter&#39;;return true;">https://groups.google.com=
/a/<wbr>isocpp.org/d/msgid/std-<wbr>proposals/945c77c8-18e4-40fe-<wbr>8880-=
83346219bec4%40isocpp.org</a><wbr>.<br>
</blockquote></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/6824aaf9-11a6-4502-853c-60226d10c286%=
40isocpp.org?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.=
com/a/isocpp.org/d/msgid/std-proposals/6824aaf9-11a6-4502-853c-60226d10c286=
%40isocpp.org</a>.<br />

------=_Part_832_478475088.1541166941075--

------=_Part_831_2089697636.1541166941075--

.