Topic: [c++std-core-27227] An implementation of
Author: "'Geoffrey Romer' via ISO C++ Standard - Future Proposals" <std-proposals@isocpp.org>
Date: Fri, 6 Mar 2015 10:22:35 -0800
Raw View
--001a11c1092ec646060510a2c49e
Content-Type: text/plain; charset=UTF-8
On Fri, Mar 6, 2015 at 10:09 AM, Bjarne Stroustrup <bjarne@stroustrup.com>
wrote:
>
>
> On 3/6/2015 1:07 PM, Nicol Bolas wrote:
>
>
>
> On Friday, March 6, 2015 at 12:38:14 PM UTC-5, Jonathan Wakely wrote:
>>
>> On 6 March 2015 at 17:21, Nicol Bolas wrote:
>> > Explain to me, the novice C++ programmer, why this thing which doesn't
>> look
>> > like a template suddenly became a template. Explain to me why I have to
>> > implement it in a header, even though it looks exactly like every other
>> > non-template function declaration/definition.
>> >
>> > To the novice C++ programmer, it isn't "all just programming." Whether
>> > something is a template matters.
>>
>> Ah, the "won't somebody think of the children" argument.
>>
>> The answer to why it suddenly became a template is that its parameter
>> is a concept, not a type. A concept is a family of types. I don't see
>> why that should be much harder to teach than "a function template is a
>> family of functions" and "a class template is a family of types".
>>
>
> If a "family of functions" is so fundamentally different from a regular
> function that it can't be declared/defined in the same way, why does it
> look exactly like a regular function? If swapping one identifier for
> another can so radically change how you go about implementing something,
> shouldn't it be more syntactically obvious that you've made a major change?
>
> Without the template keyword, it doesn't look like a template. And
> therefore, it is not immediately obvious that it should be treated as such.
>
>
> People will learn. Learning that
> void f(auto);
> implies template is kid's play compared to some things we expect people to
> figure out.
>
That's not the case he's talking about. He's talking about this one:
void f(T);
I don't see how "people will learn" to tell whether that's a template,
because there just fundamentally isn't enough information there to answer
that question, and in real code the necessary information might be anywhere
in the transitive #include graph.
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.
--001a11c1092ec646060510a2c49e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div class=3D"gmail_extra"><br><div class=3D"gmail_quote">=
On Fri, Mar 6, 2015 at 10:09 AM, Bjarne Stroustrup <span dir=3D"ltr"><<a=
href=3D"mailto:bjarne@stroustrup.com" target=3D"_blank">bjarne@stroustrup.=
com</a>></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
=20
=20
=20
<div bgcolor=3D"#FFFFFF" text=3D"#000000"><div><div class=3D"h5">
<br>
<br>
<div>On 3/6/2015 1:07 PM, Nicol Bolas wrote:<br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<br>
On Friday, March 6, 2015 at 12:38:14 PM UTC-5, Jonathan Wakely
wrote:
<blockquote class=3D"gmail_quote" style=3D"margin:0;margin-left:0.8=
ex;border-left:1px #ccc solid;padding-left:1ex">On 6
March 2015 at 17:21, Nicol Bolas wrote:
<br>
> Explain to me, the novice C++ programmer, why this thing
which doesn't look
<br>
> like a template suddenly became a template. Explain to me
why I have to
<br>
> implement it in a header, even though it looks exactly
like every other
<br>
> non-template function declaration/definition.
<br>
>
<br>
> To the novice C++ programmer, it isn't "all just
programming." Whether
<br>
> something is a template matters.
<br>
<br>
Ah, the "won't somebody think of the children" argu=
ment.
<br>
<br>
The answer to why it suddenly became a template is that its
parameter
<br>
is a concept, not a type. A concept is a family of types.=C2=A0 I
don't see
<br>
why that should be much harder to teach than "a function
template is a
<br>
family of functions" and "a class template is a family =
of
types".
<br>
</blockquote>
<div><br>
If a "family of functions" is so fundamentally differen=
t from
a regular function that it can't be declared/defined in the
same way, why does it look exactly like a regular function? If
swapping one identifier for another can so radically change
how you go about implementing something, shouldn't it be more
syntactically obvious that you've made a major change?<br>
<br>
Without the template keyword, it doesn't look like a template=
..
And therefore, it is not immediately obvious that it should be
treated as such.</div>
<br>
</div>
</blockquote>
<br></div></div>
People will learn. Learning that<br>
=C2=A0=C2=A0=C2=A0 void f(auto);<br>
implies template is kid's play compared to some things we expect
people to figure out.<br></div></blockquote><div><br></div><div>That=
9;s not the case he's talking about. He's talking about this one:</=
div><div><br></div><div>void f(T);=C2=A0</div></div><br></div><div class=3D=
"gmail_extra">I don't see how "people will learn" to tell whe=
ther that's a template, because there just fundamentally isn't enou=
gh information there to answer that question, and in real code the necessar=
y information might be anywhere in the transitive #include graph.</div></di=
v>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
--001a11c1092ec646060510a2c49e--
.
Author: Nevin Liber <nevin@eviloverlord.com>
Date: Fri, 6 Mar 2015 12:42:14 -0600
Raw View
--089e015385f4798aae0510a30d3f
Content-Type: text/plain; charset=UTF-8
On 6 March 2015 at 12:22, 'Geoffrey Romer' via ISO C++ Standard -
Discussion <std-discussion@isocpp.org> wrote:
>
> That's not the case he's talking about. He's talking about this one:
>
> void f(T);
>
> I don't see how "people will learn" to tell whether that's a template,
> because there just fundamentally isn't enough information there to answer
> that question, and in real code the necessary information might be anywhere
> in the transitive #include graph.
>
There are two audiences (As Andrew pointed out in his reply to my previous
message):
1. The person calling the function. For the most part, they won't know or
care whether or not it is a template function; they just include the
correct header and call it.
2. The person defining the function. They have to know whether or not it
is a template or a specific concrete type, but they had to know that anyway
to write the function.
--
Nevin ":-)" Liber <mailto:nevin@eviloverlord.com> (847) 691-1404
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-discussion+unsubscribe@isocpp.org.
To post to this group, send email to std-discussion@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-discussion/.
--089e015385f4798aae0510a30d3f
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr">On 6 March 2015 at 12:22, 'Geoffrey Romer' via ISO=
C++ Standard - Discussion <span dir=3D"ltr"><<a href=3D"mailto:std-disc=
ussion@isocpp.org" target=3D"_blank">std-discussion@isocpp.org</a>></spa=
n> wrote:<br><div class=3D"gmail_extra"><div class=3D"gmail_quote"><blockqu=
ote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px=
solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr"><div class=3D"gm=
ail_extra"><br><div class=3D"gmail_quote"><span class=3D""></span><div>That=
's not the case he's talking about. He's talking about this one=
:</div><div><br></div><div>void f(T);=C2=A0</div></div><br></div><div class=
=3D"gmail_extra">I don't see how "people will learn" to tell =
whether that's a template, because there just fundamentally isn't e=
nough information there to answer that question, and in real code the neces=
sary information might be anywhere in the transitive #include graph.</div><=
/div></blockquote><div><br></div><div>There are two audiences (As Andrew po=
inted out in his reply to my previous message):<br><br></div><div>1.=C2=A0 =
The person calling the function.=C2=A0 For the most part, they won't kn=
ow or care whether or not it is a template function; they just include the =
correct header and call it.<br><br></div><div>2.=C2=A0 The person defining =
the function.=C2=A0 They have to know whether or not it is a template or a =
specific concrete type, but they had to know that anyway to write the funct=
ion.<br></div></div>-- <br><div class=3D"gmail_signature">=C2=A0Nevin "=
;:-)" Liber=C2=A0 <mailto:<a href=3D"mailto:nevin@eviloverlord.com"=
target=3D"_blank">nevin@eviloverlord.com</a>>=C2=A0 (847) 691-1404</div=
>
</div></div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Discussion" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-discussion+unsubscribe@isocpp.org">std-discus=
sion+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-discussion@isocp=
p.org">std-discussion@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-discussion/">http://groups.google.com/a/isocpp.org/group/std-discussion=
/</a>.<br />
--089e015385f4798aae0510a30d3f--
.
Author: Tony Van Eerd <tvaneerd@blackberry.com>
Date: Fri, 6 Mar 2015 18:58:20 +0000
Raw View
--_000_2015030618581865086259101394blackberrycom_
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
If all we need is auto, then is the next step:
struct X
{
int x;
auto y;
};
X is obviously a template?
So is Y:
struct Y
{
int x;
ForwardIterator y;
};
=E2=80=8E?
(Again, I'm not actually against 'auto means template function'=E2=80=8E; I=
just bring up counter arguments to be comfortable that we explored the des=
ign space and that we have a path of consistency going forward)
Tony
Sent from my BlackBerry 10 Turing machine.
From: Bjarne Stroustrup
Sent: Friday, March 6, 2015 1:14 PM
To: c++std-core@accu.org; std-discussion@isocpp.org
Reply To: c++std-core@accu.org
Cc: std-proposals@isocpp.org; faisalv@gmail.com; hsutter@microsoft.com
Subject: [c++std-core-27227] Re: An implementation of enhanced auto deducti=
on and abbreviated template syntax using Clang
On 3/6/2015 1:07 PM, Nicol Bolas wrote:
On Friday, March 6, 2015 at 12:38:14 PM UTC-5, Jonathan Wakely wrote:
On 6 March 2015 at 17:21, Nicol Bolas wrote:
> Explain to me, the novice C++ programmer, why this thing which doesn't lo=
ok
> like a template suddenly became a template. Explain to me why I have to
> implement it in a header, even though it looks exactly like every other
> non-template function declaration/definition.
>
> To the novice C++ programmer, it isn't "all just programming." Whether
> something is a template matters.
Ah, the "won't somebody think of the children" argument.
The answer to why it suddenly became a template is that its parameter
is a concept, not a type. A concept is a family of types. I don't see
why that should be much harder to teach than "a function template is a
family of functions" and "a class template is a family of types".
If a "family of functions" is so fundamentally different from a regular fun=
ction that it can't be declared/defined in the same way, why does it look e=
xactly like a regular function? If swapping one identifier for another can =
so radically change how you go about implementing something, shouldn't it b=
e more syntactically obvious that you've made a major change?
Without the template keyword, it doesn't look like a template. And therefor=
e, it is not immediately obvious that it should be treated as such.
People will learn. Learning that
void f(auto);
implies template is kid's play compared to some things we expect people to =
figure out.
--=20
---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposa=
ls/.
--_000_2015030618581865086259101394blackberrycom_
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dwindows-1=
256">
</head>
<body bgcolor=3D"#FFFFFF">
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
If all we need is auto, then is the next step:</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
struct X</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
{</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
int x;</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
auto y;</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
};</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
X is obviously a template?</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
So is Y:</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<span style=3D"font-size:initial; text-align:initial; line-height:initial">=
struct Y</span></div>
<div style=3D"font-size:initial; text-align:initial; width:488px; font-fami=
ly:Calibri,'Slate Pro',sans-serif,sans-serif; color:rgb(31,73,125)">
{</div>
<div style=3D"font-size:initial; text-align:initial; width:488px; font-fami=
ly:Calibri,'Slate Pro',sans-serif,sans-serif; color:rgb(31,73,125)">
int x;</div>
<div style=3D"font-size:initial; text-align:initial; width:488px; font-fami=
ly:Calibri,'Slate Pro',sans-serif,sans-serif; color:rgb(31,73,125)">
ForwardIterator y;</div>
<div style=3D"font-size:initial; text-align:initial; width:488px; font-fami=
ly:Calibri,'Slate Pro',sans-serif,sans-serif; color:rgb(31,73,125)">
};</div>
<div style=3D"font-size:initial; text-align:initial; width:488px; font-fami=
ly:Calibri,'Slate Pro',sans-serif,sans-serif; color:rgb(31,73,125)">
<br>
</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
=E2=80=8E?</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
(Again, I'm not actually against 'auto means template function'=E2=80=8E; I=
just bring up counter arguments to be comfortable that we explored the des=
ign space and that we have a path of consistency going forward) </div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
Tony</div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<span style=3D"font-size:initial; text-align:initial; line-height:initial">=
<br>
</span></div>
<div style=3D"width:100%; font-size:initial; font-family:Calibri,'Slate Pro=
',sans-serif,sans-serif; color:rgb(31,73,125); text-align:initial; backgrou=
nd-color:rgb(255,255,255)">
<br style=3D"display:initial">
</div>
<div style=3D"font-size:initial; font-family:Calibri,'Slate Pro',sans-serif=
,sans-serif; color:rgb(31,73,125); text-align:initial; background-color:rgb=
(255,255,255)">
Sent from my BlackBerry 10 Turing machine.</d=
iv>
<table width=3D"100%" style=3D"background-color:white; border-spacing:0px">
<tbody>
<tr>
<td colspan=3D"2" style=3D"font-size:initial; text-align:initial; backgroun=
d-color:rgb(255,255,255)">
<div style=3D"border-style:solid none none; border-top-color:rgb(181,196,22=
3); border-top-width:1pt; padding:3pt 0in 0in; font-family:Tahoma,'BB Alpha=
Sans','Slate Pro'; font-size:10pt">
<div><b>From: </b>Bjarne Stroustrup</div>
<div><b>Sent: </b>Friday, March 6, 2015 1:14 PM</div>
<div><b>To: </b>c++std-core@accu.org; std-discussion@isocpp.org</di=
v>
<div><b>Reply To: </b>c++std-core@accu.org</div>
<div><b>Cc: </b>std-proposals@isocpp.org; faisalv@gmail.com; hsutter@micros=
oft.com</div>
<div><b>Subject: </b>[c++std-core-27227] Re: An implementation of e=
nhanced auto deduction and abbreviated template syntax using Clang</div>
</div>
</td>
</tr>
</tbody>
</table>
<div style=3D"border-style:solid none none; border-top-color:rgb(186,188,20=
9); border-top-width:1pt; font-size:initial; text-align:initial; background=
-color:rgb(255,255,255)">
</div>
<br>
<div><br>
<br>
<div class=3D"moz-cite-prefix">On 3/6/2015 1:07 PM, Nicol Bolas wrote:<br>
</div>
<blockquote type=3D"cite">
<div dir=3D"ltr"><br>
<br>
On Friday, March 6, 2015 at 12:38:14 PM UTC-5, Jonathan Wakely wrote:
<blockquote class=3D"gmail_quote" style=3D"margin:0; margin-left:0.8ex; bor=
der-left:1px #ccc solid; padding-left:1ex">
On 6 March 2015 at 17:21, Nicol Bolas wrote: <br>
> Explain to me, the novice C++ programmer, why this thing which=
doesn't look <br>
> like a template suddenly became a template. Explain to me why I have t=
o <br>
> implement it in a header, even though it looks exactly like every othe=
r <br>
> non-template function declaration/definition. <br>
> <br>
> To the novice C++ programmer, it isn't "all just programm=
ing." Whether <br>
> something is a template matters. <br>
<br>
Ah, the "won't somebody think of the children" argument. <br>
<br>
The answer to why it suddenly became a template is that its parameter <br>
is a concept, not a type. A concept is a family of types. I don't see=
<br>
why that should be much harder to teach than "a function template is a=
<br>
family of functions" and "a class template is a family of types&q=
uot;. <br>
</blockquote>
<div><br>
If a "family of functions" is so fundamentally different from a r=
egular function that it can't be declared/defined in the same way, why does=
it look exactly like a regular function? If swapping one identifier for an=
other can so radically change how you go about
implementing something, shouldn't it be more syntactically obvious that yo=
u've made a major change?<br>
<br>
Without the template keyword, it doesn't look like a template. And therefor=
e, it is not immediately obvious that it should be treated as such.</div>
<br>
</div>
</blockquote>
<br>
People will learn. Learning that<br>
void f(auto);<br>
implies template is kid's play compared to some things we expect people to =
figure out.<br>
<br>
</div>
</body>
</html>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
--_000_2015030618581865086259101394blackberrycom_--
.
Author: Tom Honermann <thonermann@coverity.com>
Date: Fri, 6 Mar 2015 14:04:08 -0500
Raw View
On 03/06/2015 01:42 PM, Nevin Liber wrote:
> There are two audiences (As Andrew pointed out in his reply to my
> previous message):
>
> 1. The person calling the function. For the most part, they won't know
> or care whether or not it is a template function; they just include the
> correct header and call it.
>
> 2. The person defining the function. They have to know whether or not
> it is a template or a specific concrete type, but they had to know that
> anyway to write the function.
I would argue for a third audience (though arguably a subset of the 2nd
case above):
3. The person modifying the function. They have to know whether or not
it is a template or a specific concrete type.
We can say that, if a person changes a function without first
determining that and causes a regression, well shame on them. I think
that is fair. But I think we can do better by offering a little assistance.
Tom.
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-discussion+unsubscribe@isocpp.org.
To post to this group, send email to std-discussion@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-discussion/.
.
Author: Matthew Fioravante <fmatthew5876@gmail.com>
Date: Fri, 6 Mar 2015 11:14:45 -0800 (PST)
Raw View
------=_Part_1143_625912532.1425669285392
Content-Type: multipart/alternative;
boundary="----=_Part_1144_1337022318.1425669285393"
------=_Part_1144_1337022318.1425669285393
Content-Type: text/plain; charset=UTF-8
On Friday, March 6, 2015 at 1:58:23 PM UTC-5, Tony Van Eerd wrote:
>
> If all we need is auto, then is the next step:
>
> struct X
> {
> int x;
> auto y;
> };
>
> X is obviously a template
>
Lets have even more fun:
//This is a template
struct A {
auto x;
};
//This is not a template
struct B {
auto x = 1;
};
(for the record, I'd be happy either way but its good to play devils
advocate)
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.
------=_Part_1144_1337022318.1425669285393
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Friday, March 6, 2015 at 1:58:23 PM UTC-5, Tony=
Van Eerd wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0pt 0pt =
0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div bgcolor=3D"#FFFFFF">
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
If all we need is auto, then is the next step:</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
struct X</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
{</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
int x;</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
auto y;</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
};</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
<br>
</div>
<div style=3D"width: 100%; font-family: Calibri,'Slate Pro',sans-serif,sans=
-serif; color: rgb(31, 73, 125); background-color: rgb(255, 255, 255);">
X is obviously a template</div></div></blockquote><div><br>Lets have even m=
ore fun:<br><br><div class=3D"prettyprint" style=3D"background-color: rgb(2=
50, 250, 250); border: 1px solid rgb(187, 187, 187); word-wrap: break-word;=
"><code class=3D"prettyprint"></code><div class=3D"subprettyprint"><span st=
yle=3D"color: rgb(136, 0, 0);" class=3D"styled-by-prettify">//This is a tem=
plate</span><span style=3D"color: rgb(0, 0, 0);" class=3D"styled-by-prettif=
y"><br></span><span style=3D"color: rgb(0, 0, 136);" class=3D"styled-by-pre=
ttify">struct</span><span style=3D"color: rgb(0, 0, 0);" class=3D"styled-by=
-prettify"> A </span><span style=3D"color: rgb(102, 102, 0);" class=3D"styl=
ed-by-prettify">{</span><span style=3D"color: rgb(0, 0, 0);" class=3D"style=
d-by-prettify"><br> </span><span style=3D"color: rgb(0, 0, 136);" cla=
ss=3D"styled-by-prettify">auto</span><span style=3D"color: rgb(0, 0, 0);" c=
lass=3D"styled-by-prettify"> x</span><span style=3D"color: rgb(102, 102, 0)=
;" class=3D"styled-by-prettify">;</span><span style=3D"color: rgb(0, 0, 0);=
" class=3D"styled-by-prettify"><br></span><span style=3D"color: rgb(102, 10=
2, 0);" class=3D"styled-by-prettify">};</span><span style=3D"color: rgb(0, =
0, 0);" class=3D"styled-by-prettify"><br><br></span><span style=3D"color: r=
gb(136, 0, 0);" class=3D"styled-by-prettify">//This is not a template</span=
><span style=3D"color: rgb(0, 0, 0);" class=3D"styled-by-prettify"><br></sp=
an><span style=3D"color: rgb(0, 0, 136);" class=3D"styled-by-prettify">stru=
ct</span><span style=3D"color: rgb(0, 0, 0);" class=3D"styled-by-prettify">=
B </span><span style=3D"color: rgb(102, 102, 0);" class=3D"styled-by-prett=
ify">{</span><span style=3D"color: rgb(0, 0, 0);" class=3D"styled-by-pretti=
fy"><br> </span><span style=3D"color: rgb(0, 0, 136);" class=3D"style=
d-by-prettify">auto</span><span style=3D"color: rgb(0, 0, 0);" class=3D"sty=
led-by-prettify"> x </span><span style=3D"color: rgb(102, 102, 0);" class=
=3D"styled-by-prettify">=3D</span><span style=3D"color: rgb(0, 0, 0);" clas=
s=3D"styled-by-prettify"> </span><span style=3D"color: rgb(0, 102, 102);" c=
lass=3D"styled-by-prettify">1</span><span style=3D"color: rgb(102, 102, 0);=
" class=3D"styled-by-prettify">;</span><span style=3D"color: rgb(0, 0, 0);"=
class=3D"styled-by-prettify"><br></span><span style=3D"color: rgb(102, 102=
, 0);" class=3D"styled-by-prettify">};</span><span style=3D"color: rgb(0, 0=
, 0);" class=3D"styled-by-prettify"><br></span></div></div><br><br>(for the=
record, I'd be happy either way but its good to play devils advocate)<br><=
/div></div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Future Proposals" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-proposals+unsubscribe@isocpp.org">std-proposa=
ls+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/<=
/a>.<br />
------=_Part_1144_1337022318.1425669285393--
------=_Part_1143_625912532.1425669285392--
.
Author: Scott Prager <splinterofchaos@gmail.com>
Date: Fri, 6 Mar 2015 11:28:44 -0800 (PST)
Raw View
------=_Part_757_830639737.1425670124874
Content-Type: multipart/alternative;
boundary="----=_Part_758_1608038602.1425670124878"
------=_Part_758_1608038602.1425670124878
Content-Type: text/plain; charset=UTF-8
On Friday, March 6, 2015 at 2:14:47 PM UTC-5, Matthew Fioravante wrote:
>
>
>
> On Friday, March 6, 2015 at 1:58:23 PM UTC-5, Tony Van Eerd wrote:
>>
>> If all we need is auto, then is the next step:
>>
>> struct X
>> {
>> int x;
>> auto y;
>> };
>>
>> X is obviously a template
>>
>
> Lets have even more fun:
>
> //This is a template
> struct A {
> auto x;
> };
>
> //This is not a template
> struct B {
> auto x = 1;
> };
>
>
> (for the record, I'd be happy either way but its good to play devils
> advocate)
>
These examples seem rather farcical to me. How would we instantiate such a
type? At least with functions, we get implicit specialization based on the
arguments supplied, but with types... to make it feasible, we'd have to
enable
this syntax:
std::pair p{x, std::ref(y)}; // std::pair<X, Y&>
....and I don't see that happening. I think the analogy of template classes
to
template functions is apples to oranges since they operate by very different
rules.
*(Not that I don't think the above syntax would be great, just not as
feasible.)*
--
---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-discussion+unsubscribe@isocpp.org.
To post to this group, send email to std-discussion@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-discussion/.
------=_Part_758_1608038602.1425670124878
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><br><br>On Friday, March 6, 2015 at 2:14:47 PM UTC-5, Matt=
hew Fioravante wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;m=
argin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=
=3D"ltr"><br><br>On Friday, March 6, 2015 at 1:58:23 PM UTC-5, Tony Van Eer=
d wrote:<blockquote class=3D"gmail_quote" style=3D"margin:0pt 0pt 0pt 0.8ex=
;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<div bgcolor=3D"#FFFFFF">
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
If all we need is auto, then is the next step:</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
struct X</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
{</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
int x;</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
auto y;</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
};</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%;font-family:Calibri,'Slate Pro',sans-serif,sans-se=
rif;color:rgb(31,73,125);background-color:rgb(255,255,255)">
X is obviously a template</div></div></blockquote><div><br>Lets have even m=
ore fun:<br><br><div style=3D"background-color:rgb(250,250,250);border:1px =
solid rgb(187,187,187);word-wrap:break-word"><code></code><div><span style=
=3D"color:rgb(136,0,0)">//This is a template</span><span style=3D"color:rgb=
(0,0,0)"><br></span><span style=3D"color:rgb(0,0,136)">struct</span><span s=
tyle=3D"color:rgb(0,0,0)"> A </span><span style=3D"color:rgb(102,102,0)">{<=
/span><span style=3D"color:rgb(0,0,0)"><br> </span><span style=3D"col=
or:rgb(0,0,136)">auto</span><span style=3D"color:rgb(0,0,0)"> x</span><span=
style=3D"color:rgb(102,102,0)">;</span><span style=3D"color:rgb(0,0,0)"><b=
r></span><span style=3D"color:rgb(102,102,0)">};</span><span style=3D"color=
:rgb(0,0,0)"><br><br></span><span style=3D"color:rgb(136,0,0)">//This is no=
t a template</span><span style=3D"color:rgb(0,0,0)"><br></span><span style=
=3D"color:rgb(0,0,136)">struct</span><span style=3D"color:rgb(0,0,0)"> B </=
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(0,0,136)">auto</span><sp=
an style=3D"color:rgb(0,0,0)"> x </span><span style=3D"color:rgb(102,102,0)=
">=3D</span><span style=3D"color:rgb(0,0,0)"> </span><span style=3D"color:r=
gb(0,102,102)">1</span><span style=3D"color:rgb(102,102,0)">;</span><span s=
tyle=3D"color:rgb(0,0,0)"><br></span><span style=3D"color:rgb(102,102,0)">}=
;</span><span style=3D"color:rgb(0,0,0)"><br></span></div></div><br><br>(fo=
r the record, I'd be happy either way but its good to play devils advocate)=
<br></div></div></blockquote><div><br></div><div><div>These examples seem r=
ather farcical to me. How would we instantiate such a</div><div>type? At le=
ast with functions, we get implicit specialization based on the</div><div>a=
rguments supplied, but with types... to make it feasible, we'd have to enab=
le</div><div>this syntax:</div><div><br></div><div><div class=3D"prettyprin=
t" style=3D"border: 1px solid rgb(187, 187, 187); word-wrap: break-word; ba=
ckground-color: rgb(250, 250, 250);"><code class=3D"prettyprint"><div class=
=3D"subprettyprint"><span style=3D"color: #000;" class=3D"styled-by-prettif=
y">std</span><span style=3D"color: #660;" class=3D"styled-by-prettify">::</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify">pair p</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify">x</span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"> std</span><span style=3D"color: #660;" cla=
ss=3D"styled-by-prettify">::</span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">ref</span><span style=3D"color: #660;" class=3D"styled-by=
-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-prettify=
">y</span><span style=3D"color: #660;" class=3D"styled-by-prettify">)};</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span>=
<span style=3D"color: #800;" class=3D"styled-by-prettify">// std::pair<X=
, Y&></span></div></code></div></div><div><br></div><div>...and I do=
n't see that happening. I think the analogy of template classes to</div><di=
v>template functions is apples to oranges since they operate by very differ=
ent</div><div>rules.</div></div><div><br></div><div><i>(Not that I don't th=
ink the above syntax would be great, just not as feasible.)</i></div></div>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Discussion" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-discussion+unsubscribe@isocpp.org">std-discus=
sion+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-discussion@isocp=
p.org">std-discussion@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-discussion/">http://groups.google.com/a/isocpp.org/group/std-discussion=
/</a>.<br />
------=_Part_758_1608038602.1425670124878--
------=_Part_757_830639737.1425670124874--
.
Author: "Vicente J. Botet Escriba" <vicente.botet@wanadoo.fr>
Date: Sat, 07 Mar 2015 17:51:07 +0100
Raw View
This is a multi-part message in MIME format.
--------------010009050209080206050501
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: quoted-printable
Le 06/03/15 19:58, Tony Van Eerd a =C3=A9crit :
> If all we need is auto, then is the next step:
>
> struct X
> {
> int x;
> auto y;
> };
>
> X is obviously a template?
> So is Y:
>
> struct Y
> {
> int x;
> ForwardIterator y;
> };
>
> =E2=80=8E?
>
> (Again, I'm not actually against 'auto means template function'=E2=80=8E;=
I=20
> just bring up counter arguments to be comfortable that we explored the=20
> design space and that we have a path of consistency going forward)
>
>
While for template functions the type is deduced, how could you deduce=20
the type for auto or ForwardIterator. How would you declare an instance=20
of X, or a parameter of type X.
X<???> v;
what if we had
struct X
{
auto x;
auto y;
};
X<???, ???> v;
Should the parameters need to be given in the order of declaration of=20
the auto/Concept data members?
I find this confusing.
Vicente
--=20
---=20
You received this message because you are subscribed to the Google Groups "=
ISO C++ Standard - Discussion" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to std-discussion+unsubscribe@isocpp.org.
To post to this group, send email to std-discussion@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-discuss=
ion/.
--------------010009050209080206050501
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Type=
">
</head>
<body text=3D"#000000" bgcolor=3D"#FFFFFF">
<div class=3D"moz-cite-prefix">Le 06/03/15 19:58, Tony Van Eerd a
=C3=A9crit=C2=A0:<br>
</div>
<blockquote
cite=3D"mid:20150306185818.6508625.910.1394@blackberry.com"
type=3D"cite">
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dutf=
-8">
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
If all we need is auto, then is the next step:</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
struct X</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
{</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
=C2=A0 =C2=A0 int x;</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
=C2=A0 =C2=A0 auto y;</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
};</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
X is obviously a template?</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
So is Y:</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
<span style=3D"font-size:initial; text-align:initial;
line-height:initial">struct Y</span></div>
<div style=3D"font-size:initial; text-align:initial; width:488px;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125)">
{</div>
<div style=3D"font-size:initial; text-align:initial; width:488px;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125)">
=C2=A0 =C2=A0 int x;</div>
<div style=3D"font-size:initial; text-align:initial; width:488px;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125)">
=C2=A0 =C2=A0 ForwardIterator y;</div>
<div style=3D"font-size:initial; text-align:initial; width:488px;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125)">
};</div>
<div style=3D"font-size:initial; text-align:initial; width:488px;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125)">
<br>
</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
=E2=80=8E?</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
<br>
</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
(Again, I'm not actually against 'auto means template
function'=E2=80=8E; I just bring up counter arguments to be comfort=
able
that we explored the design space and that we have a path of
consistency going forward)=C2=A0</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
<br>
</div>
<br>
</blockquote>
While for template functions the type is deduced, how could you
deduce the type for auto or ForwardIterator. How would you declare
an instance of X, or a parameter of type X.<br>
<br>
X<???> v;<br>
<br>
what if we had<br>
<br>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
struct X</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
{</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
=C2=A0 =C2=A0 auto x;</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
=C2=A0 =C2=A0 auto y;</div>
<div style=3D"width:100%; font-size:initial;
font-family:Calibri,'Slate Pro',sans-serif,sans-serif;
color:rgb(31,73,125); text-align:initial;
background-color:rgb(255,255,255)">
};</div>
<br>
X<???, ???> v;<br>
<br>
Should the parameters need to be given in the order of declaration
of the auto/Concept data members?<br>
<br>
I find this confusing.<br>
<br>
Vicente<br>
</body>
</html>
<p></p>
-- <br />
<br />
--- <br />
You received this message because you are subscribed to the Google Groups &=
quot;ISO C++ Standard - Discussion" group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:std-discussion+unsubscribe@isocpp.org">std-discus=
sion+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href=3D"mailto:std-discussion@isocp=
p.org">std-discussion@isocpp.org</a>.<br />
Visit this group at <a href=3D"http://groups.google.com/a/isocpp.org/group/=
std-discussion/">http://groups.google.com/a/isocpp.org/group/std-discussion=
/</a>.<br />
--------------010009050209080206050501--
.