Topic: Generalizing the equivalence of auto and


Author: George Makrydakis <irrequietus@gmail.com>
Date: Thu, 02 Oct 2014 12:05:04 +0300
Raw View
------F271HYFDCQPIQOAYFNL1WUSGZKY52W
Content-Type: text/plain; charset=UTF-8

Again, this has already been discussed. See previous emails on this thread on why you would have problems with that as it is. You do not even gain total equivalence over canonical template syntax, if that is your goal.

On October 2, 2014 11:43:58 AM EEST, Tomasz <tomaszkam@gmail.com> wrote:
>My proposal is that every use of placholder (today we have only auto,
>but
>concept name would be a possible extension) would introduce separate
>typename, so:
>std::pair<auto, auto> p = f();
>
>Would use equivalent deduction as:
>template<typename T1, typename T2>
>void foo(std::pair<T1, T2>);
>
>And two different types can be deduced. To achieve the pair of the same
>
>types I would use syntax proposed in
>http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2014/n3878.pdf
><http://n3878>, that allow us to introduce indentyfier for a type
>deduced
>from placeholder. So if we want to have pair of same types we would
>write:
>std::pair<auto{T}, T> p = f();
>Which will use deduction as:
>template<typename T>
>void foo(std::pair<T,T>);
>
>We will benefit from being able to refer to type T without use of
>std::decay_t<decltype(p)>::first_type and have same treatment of
>multiple
>placeholders in every context.
>
>This syntaxt can be extended to use concept names as placeholders:
>std::pair<Iterator, Iterator> f = ...;
>Will allow pair of two interator with unrelated types that fullfills
>iterator concept. To have pair of iterator with same type only, we
>could
>write
>std::pair<Iterator{I}, I> f = ...;
>
>--
>
>---
>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/.

--

---
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/.

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

<html><head></head><body><p dir=3D"ltr">Again, this has already been discus=
sed. See previous emails on this thread on why you would have problems with=
 that as it is. You do not even gain total equivalence over canonical templ=
ate syntax, if that is your goal.</p>
<br><br><div class=3D"gmail_quote">On October 2, 2014 11:43:58 AM EEST, Tom=
asz &lt;tomaszkam@gmail.com&gt; wrote:<blockquote class=3D"gmail_quote" sty=
le=3D"margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204);=
 padding-left: 1ex;">
<div dir=3D"ltr">My proposal is that every use of placholder (today we have=
 only auto, but concept name would be a possible extension) would introduce=
 separate typename, so:<br />std::pair&lt;auto, auto&gt; p =3D f();<br /><b=
r />Would use equivalent deduction as:<br />template&lt;typename T1, typena=
me T2&gt;<br />void foo(std::pair&lt;T1, T2&gt;);<br /><br />And two differ=
ent types can be deduced. To achieve the pair of the same types I would use=
 syntax proposed in <a href=3D"http://n3878">http://www.open-std.org/JTC1/S=
C22/WG21/docs/papers/2014/n3878.pdf</a>, that allow us to introduce indenty=
fier for a type deduced from placeholder. So if we want to have pair of sam=
e types we would write:<br />std::pair&lt;auto{T}, T&gt; p =3D f();<br />Wh=
ich will use deduction as:<br />template&lt;typename T&gt;<br />void foo(st=
d::pair&lt;T,T&gt;);<br /><br />We will benefit from being able to refer to=
 type T without use of std::decay_t&lt;decltype(p)&gt;::first_type and have=
 same treatment of multiple
placeholders in every context.<br /><br />This syntaxt can be extended to u=
se concept names as placeholders:<br />std::pair&lt;Iterator, Iterator&gt; =
f =3D ...;<br />Will allow pair of two interator with unrelated types that =
fullfills iterator concept. To have pair of iterator with same type only, w=
e could write<br />std::pair&lt;Iterator{I}, I&gt; f =3D ...;<br /><br /></=
div>

<p></p>
</blockquote></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&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 />
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 />

------F271HYFDCQPIQOAYFNL1WUSGZKY52W--


.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Thu, 2 Oct 2014 12:13:09 +0300
Raw View
On 2 October 2014 11:43, Tomasz <tomaszkam@gmail.com> wrote:
> My proposal is that every use of placholder (today we have only auto, but
> concept name would be a possible extension) would introduce separate
> typename, so:
> std::pair<auto, auto> p = f();
>
> Would use equivalent deduction as:
> template<typename T1, typename T2>
> void foo(std::pair<T1, T2>);

That's already how it works.

--

---
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/.

.


Author: Tomasz <tomaszkam@gmail.com>
Date: Thu, 2 Oct 2014 02:29:23 -0700 (PDT)
Raw View
------=_Part_4566_65926435.1412242163136
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Sorry, I misunderstood your point.

I think with use of concepts as placeholders we can still require different=
=20
type. Let assume that we have concept Different Type<A,B>, could probably=
=20
write:
std::pair<auto{T}, Different Type<T>> f =3D..;
but I would say that the programmer should specify types explicitly in that=
=20
case.

Also for the examples were pair<auto, auto> used in the function: We=20
already have a longer notation that would allow us to a specify constrained=
=20
case, so there is not need to cover that in shorthand notation.

W dniu czwartek, 2 pa=C5=BAdziernika 2014 11:13:10 UTC+2 u=C5=BCytkownik Vi=
lle=20
Voutilainen napisa=C5=82:
>
> On 2 October 2014 11:43, Tomasz <toma...@gmail.com <javascript:>> wrote:=
=20
> > My proposal is that every use of placholder (today we have only auto,=
=20
> but=20
> > concept name would be a possible extension) would introduce separate=20
> > typename, so:=20
> > std::pair<auto, auto> p =3D f();=20
> >=20
> > Would use equivalent deduction as:=20
> > template<typename T1, typename T2>=20
> > void foo(std::pair<T1, T2>);=20
>
> That's already how it works.=20
>

--=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/.

------=_Part_4566_65926435.1412242163136
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Sorry, I misunderstood your point.<br><br>I think with use=
 of concepts as placeholders we can still require different type. Let assum=
e that we have concept Different Type&lt;A,B&gt;, could probably write:<br>=
std::pair&lt;auto{T}, Different Type&lt;T&gt;&gt; f =3D..;<br>but I would s=
ay that the programmer should specify types explicitly in that case.<br><br=
>Also for the examples were pair&lt;auto, auto&gt; used in the function: We=
 already have a longer notation that would allow us to a specify constraine=
d case, so there is not need to cover that in shorthand notation.<br><br>W =
dniu czwartek, 2 pa=C5=BAdziernika 2014 11:13:10 UTC+2 u=C5=BCytkownik Vill=
e Voutilainen napisa=C5=82:<blockquote class=3D"gmail_quote" style=3D"margi=
n: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">On =
2 October 2014 11:43, Tomasz &lt;<a href=3D"javascript:" target=3D"_blank" =
gdf-obfuscated-mailto=3D"1Rosp3H-rUYJ" onmousedown=3D"this.href=3D'javascri=
pt:';return true;" onclick=3D"this.href=3D'javascript:';return true;">toma.=
...@gmail.com</a>&gt; wrote:
<br>&gt; My proposal is that every use of placholder (today we have only au=
to, but
<br>&gt; concept name would be a possible extension) would introduce separa=
te
<br>&gt; typename, so:
<br>&gt; std::pair&lt;auto, auto&gt; p =3D f();
<br>&gt;
<br>&gt; Would use equivalent deduction as:
<br>&gt; template&lt;typename T1, typename T2&gt;
<br>&gt; void foo(std::pair&lt;T1, T2&gt;);
<br>
<br>That's already how it works.
<br></blockquote></div>

<p></p>

-- <br />
<br />
--- <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 />
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_4566_65926435.1412242163136--

.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Thu, 2 Oct 2014 12:35:58 +0300
Raw View
On 2 October 2014 12:29, Tomasz <tomaszkam@gmail.com> wrote:
> Sorry, I misunderstood your point.
>
> I think with use of concepts as placeholders we can still require different
> type. Let assume that we have concept Different Type<A,B>, could probably
> write:
> std::pair<auto{T}, Different Type<T>> f =..;
> but I would say that the programmer should specify types explicitly in that
> case.

Fully agreed.

> Also for the examples were pair<auto, auto> used in the function: We already
> have a longer notation that would allow us to a specify constrained case, so
> there is not need to cover that in shorthand notation.


Again agreed. And you can specify the constraints by specifying them
on decltype(foo.first)
and decltype(foo.second), if you really really want.

--

---
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/.

.


Author: George Makrydakis <irrequietus@gmail.com>
Date: Thu, 02 Oct 2014 12:43:09 +0300
Raw View
------U2J4UVP8TSBB2DCAMXZZE1DUI69DPQ
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

Which is what has already been said, but you ignored it. The notation gets =
longer and weirder with such placeholders, not offering any real no rationa=
l advantage. You are only exchanging 'typename' with auto plus decltype for=
 constraining even in the most trivial case.

On October 2, 2014 12:29:23 PM EEST, Tomasz <tomaszkam@gmail.com> wrote:
>Sorry, I misunderstood your point.
>
>I think with use of concepts as placeholders we can still require
>different=20
>type. Let assume that we have concept Different Type<A,B>, could
>probably=20
>write:
>std::pair<auto{T}, Different Type<T>> f =3D..;
>but I would say that the programmer should specify types explicitly in
>that=20
>case.
>
>Also for the examples were pair<auto, auto> used in the function: We=20
>already have a longer notation that would allow us to a specify
>constrained=20
>case, so there is not need to cover that in shorthand notation.
>
>W dniu czwartek, 2 pa=C5=BAdziernika 2014 11:13:10 UTC+2 u=C5=BCytkownik V=
ille=20
>Voutilainen napisa=C5=82:
>>
>> On 2 October 2014 11:43, Tomasz <toma...@gmail.com <javascript:>>
>wrote:=20
>> > My proposal is that every use of placholder (today we have only
>auto,=20
>> but=20
>> > concept name would be a possible extension) would introduce
>separate=20
>> > typename, so:=20
>> > std::pair<auto, auto> p =3D f();=20
>> >=20
>> > Would use equivalent deduction as:=20
>> > template<typename T1, typename T2>=20
>> > void foo(std::pair<T1, T2>);=20
>>
>> That's already how it works.=20
>>
>
>--=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 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/.

--=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/.

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

<html><head></head><body><p dir=3D"ltr">Which is what has already been said=
, but you ignored it. The notation gets longer and weirder with such placeh=
olders, not offering any real no rational advantage. You are only exchangin=
g 'typename' with auto plus decltype for constraining even in the most triv=
ial case.</p>
<br><br><div class=3D"gmail_quote">On October 2, 2014 12:29:23 PM EEST, Tom=
asz &lt;tomaszkam@gmail.com&gt; wrote:<blockquote class=3D"gmail_quote" sty=
le=3D"margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204);=
 padding-left: 1ex;">
<div dir=3D"ltr">Sorry, I misunderstood your point.<br /><br />I think with=
 use of concepts as placeholders we can still require different type. Let a=
ssume that we have concept Different Type&lt;A,B&gt;, could probably write:=
<br />std::pair&lt;auto{T}, Different Type&lt;T&gt;&gt; f =3D..;<br />but I=
 would say that the programmer should specify types explicitly in that case=
..<br /><br />Also for the examples were pair&lt;auto, auto&gt; used in the =
function: We already have a longer notation that would allow us to a specif=
y constrained case, so there is not need to cover that in shorthand notatio=
n.<br /><br />W dniu czwartek, 2 pa=C5=BAdziernika 2014 11:13:10 UTC+2 u=C5=
=BCytkownik Ville Voutilainen napisa=C5=82:<blockquote class=3D"gmail_quote=
" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding=
-left: 1ex;">On 2 October 2014 11:43, Tomasz &lt;<a href=3D"javascript:" ta=
rget=3D"_blank" gdf-obfuscated-mailto=3D"1Rosp3H-rUYJ" onmousedown=3D"this.=
href=3D'javascript:';return true;"
onclick=3D"this.href=3D'javascript:';return true;">toma...@gmail.com</a>&gt=
; wrote:
<br />&gt; My proposal is that every use of placholder (today we have only =
auto, but
<br />&gt; concept name would be a possible extension) would introduce sepa=
rate
<br />&gt; typename, so:
<br />&gt; std::pair&lt;auto, auto&gt; p =3D f();
<br />&gt;
<br />&gt; Would use equivalent deduction as:
<br />&gt; template&lt;typename T1, typename T2&gt;
<br />&gt; void foo(std::pair&lt;T1, T2&gt;);
<br />
<br />That's already how it works.
<br /></blockquote></div>

<p></p>
</blockquote></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&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 />
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 />

------U2J4UVP8TSBB2DCAMXZZE1DUI69DPQ--


.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Thu, 2 Oct 2014 12:47:51 +0300
Raw View
On 2 October 2014 12:43, George Makrydakis <irrequietus@gmail.com> wrote:
> Which is what has already been said, but you ignored it. The notation gets
> longer and weirder with such placeholders, not offering any real no rational
> advantage. You are only exchanging 'typename' with auto plus decltype for
> constraining even in the most trivial case.

No we are not, because we don't write auto when we want to constrain the type.
The notation doesn't get longer and weirder, and it's shorter because we
don't need a template header for the generic function we write.

--

---
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/.

.


Author: George Makrydakis <irrequietus@gmail.com>
Date: Thu, 02 Oct 2014 13:04:19 +0300
Raw View
------T5KGQ51Y7GP9WSBENGAR8CRF0VAL5C
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8

If you do not care about constraints yes, but Andy's decltype use should wa=
rn of something.

It gets weirder when you have to use decltype tricks like Andy did. Therefo=
re, such use of auto is very restrictive for only some cases of unbound pol=
ymorphism; it does not offer a viable substitution for template parameter l=
ists in the general case. See previous posts on this. It fitted C++14 genet=
ic lambdas because of the constraints lambdas have themselves.

I am not saying it is totally useless, I am saying that it much, much, much=
 less useful once decltype tricks have to enter the scene. Imagine having t=
o read code using such overloads submitting to partial ordering.

In essence, it encourages metaprogrammimg boilerplate where there isn't nee=
d for.

On October 2, 2014 12:47:51 PM EEST, Ville Voutilainen <ville.voutilainen@g=
mail.com> wrote:
>On 2 October 2014 12:43, George Makrydakis <irrequietus@gmail.com>
>wrote:
>> Which is what has already been said, but you ignored it. The notation
>gets
>> longer and weirder with such placeholders, not offering any real no
>rational
>> advantage. You are only exchanging 'typename' with auto plus decltype
>for
>> constraining even in the most trivial case.
>
>No we are not, because we don't write auto when we want to constrain
>the type.
>The notation doesn't get longer and weirder, and it's shorter because
>we
>don't need a template header for the generic function we write.
>
>--=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 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/.

--=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/.

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

<html><head></head><body><p dir=3D"ltr">If you do not care about constraint=
s yes, but Andy's decltype use should warn of something.</p>
<p dir=3D"ltr">It gets weirder when you have to use decltype tricks like An=
dy did. Therefore, such use of auto is very restrictive for only some cases=
 of unbound polymorphism; it does not offer a viable substitution for templ=
ate parameter lists in the general case. See previous posts on this. It fit=
ted C++14 genetic lambdas because of the constraints lambdas have themselve=
s.</p>
<p dir=3D"ltr">I am not saying it is totally useless, I am saying that it m=
uch, much, much less useful once decltype tricks have to enter the scene. I=
magine having to read code using such overloads submitting to partial order=
ing.</p>
<p dir=3D"ltr">In essence, it encourages metaprogrammimg boilerplate where =
there isn't need for.</p>
<br><br><div class=3D"gmail_quote">On October 2, 2014 12:47:51 PM EEST, Vil=
le Voutilainen &lt;ville.voutilainen@gmail.com&gt; 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;">
<pre class=3D"k9mail">On 2 October 2014 12:43, George Makrydakis &lt;irrequ=
ietus@gmail.com&gt; wrote:<br /><blockquote class=3D"gmail_quote" style=3D"=
margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1e=
x;"> Which is what has already been said, but you ignored it. The notation =
gets<br /> longer and weirder with such placeholders, not offering any real=
 no rational<br /> advantage. You are only exchanging 'typename' with auto =
plus decltype for<br /> constraining even in the most trivial case.<br /></=
blockquote><br />No we are not, because we don't write auto when we want to=
 constrain the type.<br />The notation doesn't get longer and weirder, and =
it's shorter because we<br />don't need a template header for the generic f=
unction we write.<br /></pre></blockquote></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&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 />
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 />

------T5KGQ51Y7GP9WSBENGAR8CRF0VAL5C--


.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Thu, 2 Oct 2014 13:11:26 +0300
Raw View
On 2 October 2014 13:04, George Makrydakis <irrequietus@gmail.com> wrote:
> I am not saying it is totally useless, I am saying that it much, much, much
> less useful once decltype tricks have to enter the scene. Imagine having to
> read code using such overloads submitting to partial ordering.
> In essence, it encourages metaprogrammimg boilerplate where there isn't need
> for.

I don't see how it encourages such boilerplate when there are
solutions available
which don't require that boilerplate. If I use auto, I don't care
about the constraints.
If I care about the constraints, I don't use auto. None of this makes
the auto itself
less useful, since it's a notational shorthand for the unconstrained case.

--

---
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/.

.