Topic: Succinct declaration of metavariables


Author: ilja.j.honkonen@nasa.gov
Date: Tue, 17 Feb 2015 07:07:58 -0800 (PST)
Raw View
------=_Part_3727_95280582.1424185678998
Content-Type: multipart/alternative;
 boundary="----=_Part_3728_1505424659.1424185678998"

------=_Part_3728_1505424659.1424185678998
Content-Type: text/plain; charset=UTF-8

Hello

Regular variables can be written succinctly as
constexpr double
    long_variable_name_1 = 0,
    long_variable_name_2 = 1,
    long_variable_name_3
        = long_variable_name_1
        + long_variable_name_2;
instead of
constexpr double long_variable_name_1 = 0;
constexpr double long_variable_name_2 = 1;
constexpr double long_variable_name_3
    = long_variable_name_1
    + long_variable_name_2;

It would be nice to be able to use similar syntax for metavariables, e.g.
using
    long_metavariable_name_1 = int,
    long_metavariable_name_2 = double,
    long_metavariable_name_3 = boost::mpl::...;
instead of
using long_metavariable_name_1 = int;
using long_metavariable_name_2 = double;
using long_metavariable_name_3 = boost::mpl::...;
One could also put
template<class T>
in front of each using word.

For more complex cases
template<class A> using long_metavariable_name_1 = int;
template<class B> using long_metavariable_name_2 = double;
template<class C> using long_metavariable_name_3 = boost::mpl::...;
the syntax could be
using
    template<class A> long_metavariable_name_1 = int,
    template<class B> long_metavariable_name_2 = double,
    template<class C> long_metavariable_name_3 = boost::mpl::...;

Shared template parameters could be put in front of the using word above
and would be equal to
template<class T, class A> using long_metavariable_name_1 = int;
template<class T, class B> using long_metavariable_name_2 = double;
template<class T, class C> using long_metavariable_name_3 = boost::mpl::...;

Is something like this possible? At least it seems to only add new syntax
for existing features.

Ilja Honkonen

--

---
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_3728_1505424659.1424185678998
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hello<br><br>Regular variables can be written succinctly a=
s<br><div class=3D"prettyprint" style=3D"background-color: rgb(250, 250, 25=
0); border-color: rgb(187, 187, 187); border-style: solid; border-width: 1p=
x; word-wrap: break-word;"><code class=3D"prettyprint"><div class=3D"subpre=
ttyprint"><span style=3D"color: #008;" class=3D"styled-by-prettify">constex=
pr</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span>=
<span style=3D"color: #008;" class=3D"styled-by-prettify">double</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"><br>&nbsp; &nbsp; lon=
g_variable_name_1 </span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
> </span><span style=3D"color: #066;" class=3D"styled-by-prettify">0</span>=
<span style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"><br>&nbsp; &nbsp; long_var=
iable_name_2 </span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </s=
pan><span style=3D"color: #066;" class=3D"styled-by-prettify">1</span><span=
 style=3D"color: #660;" class=3D"styled-by-prettify">,</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"><br>&nbsp; &nbsp; long_variable=
_name_3<br>&nbsp; &nbsp; &nbsp; &nbsp; </span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> long_variable_name_1<br>&nbsp; &nbsp; &nbsp; &nbsp=
; </span><span style=3D"color: #660;" class=3D"styled-by-prettify">+</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> long_variable_na=
me_2</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></di=
v></code></div>instead of<br><div class=3D"prettyprint" style=3D"background=
-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style:=
 solid; border-width: 1px; word-wrap: break-word;"><code class=3D"prettypri=
nt"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"sty=
led-by-prettify">constexpr</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-pre=
ttify">double</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> long_variable_name_1 </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #066;" class=3D"styled-by-prettify">0=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span st=
yle=3D"color: #008;" class=3D"styled-by-prettify">constexpr</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #008;" class=3D"styled-by-prettify">double</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> long_variable_name_2 </span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #066=
;" class=3D"styled-by-prettify">1</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">;</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">constexpr</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">d=
ouble</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> long=
_variable_name_3<br>&nbsp; &nbsp; </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"> long_variable_name_1<br>&nbsp; &nbsp; </span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">+</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> long_variable_name_2</span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"><br></span></div></code></div><br>I=
t would be nice to be able to use similar syntax for metavariables, e.g.<br=
><div class=3D"prettyprint" style=3D"background-color: rgb(250, 250, 250); =
border-color: rgb(187, 187, 187); border-style: solid; border-width: 1px; w=
ord-wrap: break-word;"><code class=3D"prettyprint"><div class=3D"subprettyp=
rint"><span style=3D"color: #008;" class=3D"styled-by-prettify">using</span=
><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>&nbsp; &nbsp=
; long_metavariable_name_1 </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify"=
>int</span><span style=3D"color: #660;" class=3D"styled-by-prettify">,</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>&nbsp; &nbs=
p; long_metavariable_name_2 </span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify=
">double</span><span style=3D"color: #660;" class=3D"styled-by-prettify">,<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>&nbsp; =
&nbsp; long_metavariable_name_3 </span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"sty=
led-by-prettify"> boost</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">::</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify">mpl</span><span style=3D"color: #660;" class=3D"styled-by-prettify">::=
....;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></=
span></div></code></div>instead of<br><div class=3D"prettyprint" style=3D"b=
ackground-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); bord=
er-style: solid; border-width: 1px; word-wrap: break-word;"><code class=3D"=
prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;" cla=
ss=3D"styled-by-prettify">using</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> long_metavariable_name_1 </span><span style=3D"color:=
 #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D=
"styled-by-prettify">int</span><span style=3D"color: #660;" class=3D"styled=
-by-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">u=
sing</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> long_=
metavariable_name_2 </span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettif=
y"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">double=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">;</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span st=
yle=3D"color: #008;" class=3D"styled-by-prettify">using</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> long_metavariable_name_3 </=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> boost</span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">::</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify">mpl</span><span style=3D"color:=
 #660;" class=3D"styled-by-prettify">::...;</span></div></code></div>One co=
uld also put <div class=3D"prettyprint" style=3D"background-color: rgb(250,=
 250, 250); border-color: rgb(187, 187, 187); border-style: solid; border-w=
idth: 1px; word-wrap: break-word;"><code class=3D"prettyprint"><div class=
=3D"subprettyprint"><span style=3D"color: #008;" class=3D"styled-by-prettif=
y">template</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>&lt;</span><span style=3D"color: #008;" class=3D"styled-by-prettify">class=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> T</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"> </span></div></code></d=
iv>in front of each using word.<br><br>For more complex cases<br><div class=
=3D"prettyprint" style=3D"background-color: rgb(250, 250, 250); border-colo=
r: rgb(187, 187, 187); border-style: solid; border-width: 1px; word-wrap: b=
reak-word;"><code class=3D"prettyprint"><div class=3D"subprettyprint"><span=
 style=3D"color: #008;" class=3D"styled-by-prettify">template</span><span s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">class</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> A</span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">&gt;</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"s=
tyled-by-prettify">using</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> long_metavariable_name_1 </span><span style=3D"color: #660;"=
 class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">int</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><=
br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">templat=
e</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</spa=
n><span style=3D"color: #008;" class=3D"styled-by-prettify">class</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> B</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">using</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> long_metavariable_name_2 </span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" cl=
ass=3D"styled-by-prettify">double</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">;</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">template</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">&lt;</span><span style=3D"color: #008;" class=3D"styled-by-prettify"=
>class</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> C</=
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 styl=
e=3D"color: #008;" class=3D"styled-by-prettify">using</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> long_metavariable_name_3 </span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"> boost</span><span styl=
e=3D"color: #660;" class=3D"styled-by-prettify">::</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify">mpl</span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">::...;</span><span style=3D"color: #000;" =
class=3D"styled-by-prettify"><br></span></div></code></div>the syntax could=
 be<br><div class=3D"prettyprint" style=3D"background-color: rgb(250, 250, =
250); border-color: rgb(187, 187, 187); border-style: solid; border-width: =
1px; word-wrap: break-word;"><code class=3D"prettyprint"><div class=3D"subp=
rettyprint"><span style=3D"color: #008;" class=3D"styled-by-prettify">using=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>&nbsp;=
 &nbsp; </span><span style=3D"color: #008;" class=3D"styled-by-prettify">te=
mplate</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;=
</span><span style=3D"color: #008;" class=3D"styled-by-prettify">class</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"> A</span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> long_metavariable_name_1 </=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">int</span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"><br>&nbsp; &nbsp; </span><span style=3D"colo=
r: #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">class</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> B</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">&gt;</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"> long_metavariable_name_2 </span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D=
"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-b=
y-prettify">double</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><=
br>&nbsp; &nbsp; </span><span style=3D"color: #008;" class=3D"styled-by-pre=
ttify">template</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">&lt;</span><span style=3D"color: #008;" class=3D"styled-by-prettify">c=
lass</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> C</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> long_metavariable_n=
ame_3 </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"> boost</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">::</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify">mpl</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">::...;</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"><br></span></div></code></div><b=
r>Shared template parameters could be put in front of the using word above =
and would be equal to<br><div class=3D"prettyprint" style=3D"background-col=
or: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style: sol=
id; border-width: 1px; word-wrap: break-word;"><code class=3D"prettyprint">=
<div class=3D"subprettyprint"><div class=3D"prettyprint" style=3D"border: 1=
px solid rgb(187, 187, 187); word-wrap: break-word;"><code class=3D"prettyp=
rint"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"s=
tyled-by-prettify">template</span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">&lt;</span><span style=3D"color: #008;" class=3D"styled-by=
-prettify">class T, class</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> A</span><span style=3D"color: #660;" class=3D"styled-by-pre=
ttify">&gt;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">using</s=
pan><span style=3D"color: #000;" class=3D"styled-by-prettify"> long_metavar=
iable_name_1 </span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">=3D</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </s=
pan><span style=3D"color: #008;" class=3D"styled-by-prettify">int</span><sp=
an style=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"co=
lor: #008;" class=3D"styled-by-prettify">template</span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #00=
8;" class=3D"styled-by-prettify"><code class=3D"prettyprint"><code class=3D=
"prettyprint"><span class=3D"styled-by-prettify">class T, </span></code></c=
ode>class</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> =
B</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span s=
tyle=3D"color: #008;" class=3D"styled-by-prettify">using</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> long_metavariable_name_2 </=
span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #008;" class=3D"styled-by-prettify">double</span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" c=
lass=3D"styled-by-prettify">template</span><span style=3D"color: #660;" cla=
ss=3D"styled-by-prettify">&lt;</span><span style=3D"color: #008;" class=3D"=
styled-by-prettify"><code class=3D"prettyprint"><code class=3D"prettyprint"=
><span class=3D"styled-by-prettify">class T, </span></code></code>class</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> C</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-prettify">using</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> long_metavariable_name_3 </span><span sty=
le=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> boost</span><span style=3D"color=
: #660;" class=3D"styled-by-prettify">::</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify">mpl</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">::...;</span><span style=3D"color: #000;" class=3D"=
styled-by-prettify"><br></span></div></code></div><span style=3D"color: #66=
0;" class=3D"styled-by-prettify"></span></div></code></div><br>Is something=
 like this possible? At least it seems to only add new syntax for existing =
features.<br><br>Ilja Honkonen<br></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_3728_1505424659.1424185678998--
------=_Part_3727_95280582.1424185678998--

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Tue, 17 Feb 2015 08:31:33 -0800 (PST)
Raw View
------=_Part_329_1797358514.1424190694003
Content-Type: multipart/alternative;
 boundary="----=_Part_330_1699566096.1424190694003"

------=_Part_330_1699566096.1424190694003
Content-Type: text/plain; charset=UTF-8

So you want to add a language feature, just to avoid typing the keyword
"using?" That sounds like a massive waste of the committee's time.

--

---
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_330_1699566096.1424190694003
Content-Type: text/html; charset=UTF-8

<div dir="ltr">So you want to add a language feature, just to avoid typing the keyword "using?" That sounds like a massive waste of the committee's time.<br></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 email to <a href="mailto:std-proposals+unsubscribe@isocpp.org">std-proposals+unsubscribe@isocpp.org</a>.<br />
To post to this group, send email to <a href="mailto:std-proposals@isocpp.org">std-proposals@isocpp.org</a>.<br />
Visit this group at <a href="http://groups.google.com/a/isocpp.org/group/std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/</a>.<br />

------=_Part_330_1699566096.1424190694003--
------=_Part_329_1797358514.1424190694003--

.


Author: Ilja Honkonen <ilja.j.honkonen@nasa.gov>
Date: Tue, 17 Feb 2015 12:09:20 -0500
Raw View
> So you want to add a language feature, just to avoid typing the keyword
> "using?" That sounds like a massive waste of the committee's time.

I don't know whether the ability to avoid typing the keyword double was
a conscious decision (in K&R or before, after?), if it wasn't then I
agree that this probably wouldn't be worth the apparently large effort,
but if it was then similar reasoning might apply here.
Ilja

--

---
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: Scott Prager <splinterofchaos@gmail.com>
Date: Tue, 17 Feb 2015 09:30:33 -0800 (PST)
Raw View
------=_Part_3913_1638260200.1424194233608
Content-Type: multipart/alternative;
 boundary="----=_Part_3914_1351343213.1424194233608"

------=_Part_3914_1351343213.1424194233608
Content-Type: text/plain; charset=UTF-8

Don't really see this as necessary, but if you want that syntax, wouldn't
it make more sense to do something like this?:

template<class X>
using Type1 = expr1<X>,
      Type2 = expr2<X>,
      Type3 = expr3<X>;


On Tuesday, February 17, 2015 at 10:07:59 AM UTC-5, ilja.j....@nasa.gov
wrote:
>
> Hello
>
> Regular variables can be written succinctly as
> constexpr double
>     long_variable_name_1 = 0,
>     long_variable_name_2 = 1,
>     long_variable_name_3
>         = long_variable_name_1
>         + long_variable_name_2;
> instead of
> constexpr double long_variable_name_1 = 0;
> constexpr double long_variable_name_2 = 1;
> constexpr double long_variable_name_3
>     = long_variable_name_1
>     + long_variable_name_2;
>
> It would be nice to be able to use similar syntax for metavariables, e.g.
> using
>     long_metavariable_name_1 = int,
>     long_metavariable_name_2 = double,
>     long_metavariable_name_3 = boost::mpl::...;
> instead of
> using long_metavariable_name_1 = int;
> using long_metavariable_name_2 = double;
> using long_metavariable_name_3 = boost::mpl::...;
> One could also put
> template<class T>
> in front of each using word.
>
> For more complex cases
> template<class A> using long_metavariable_name_1 = int;
> template<class B> using long_metavariable_name_2 = double;
> template<class C> using long_metavariable_name_3 = boost::mpl::...;
> the syntax could be
> using
>     template<class A> long_metavariable_name_1 = int,
>     template<class B> long_metavariable_name_2 = double,
>     template<class C> long_metavariable_name_3 = boost::mpl::...;
>
> Shared template parameters could be put in front of the using word above
> and would be equal to
> template<class T, class A> using long_metavariable_name_1 = int;
> template<class T, class B> using long_metavariable_name_2 = double;
> template<class T, class C> using long_metavariable_name_3 = boost::mpl
> ::...;
>
> Is something like this possible? At least it seems to only add new syntax
> for existing features.
>
> Ilja Honkonen
>

--

---
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_3914_1351343213.1424194233608
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Don't really see this as necessary, but if you want that s=
yntax, wouldn't it make more sense to do something like this?:<div><br></di=
v><div class=3D"prettyprint" style=3D"border: 1px solid rgb(187, 187, 187);=
 word-wrap: break-word; background-color: rgb(250, 250, 250);"><code class=
=3D"prettyprint"><div class=3D"subprettyprint"><span style=3D"color: #008;"=
 class=3D"styled-by-prettify">template</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">&lt;</span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">class</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> X</span><span style=3D"color: #660;" class=3D"styled-by=
-prettify">&gt;</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">u=
sing</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </spa=
n><span style=3D"color: #606;" class=3D"styled-by-prettify">Type1</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"col=
or: #000;" class=3D"styled-by-prettify"> expr1</span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify">X</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">&gt;,</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"><br>&nbsp; &nbsp; &nbsp; </span><span style=3D"color: #606;=
" class=3D"styled-by-prettify">Type2</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> expr2</span><span style=3D"color: #660;" class=3D"styled-by-pret=
tify">&lt;</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
X</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;,</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify">&nbsp; &nbsp; &nbsp;=
 </span><span style=3D"color: #606;" class=3D"styled-by-prettify">Type3</sp=
an><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">=3D</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> expr3</span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color:=
 #000;" class=3D"styled-by-prettify">X</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">&gt;;</span></div></code></div><div><br></div><=
div><div><br>On Tuesday, February 17, 2015 at 10:07:59 AM UTC-5, ilja.j....=
@nasa.gov wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;margin=
-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><div dir=3D"lt=
r">Hello<br><br>Regular variables can be written succinctly as<br><div styl=
e=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,187);border=
-style:solid;border-width:1px;word-wrap:break-word"><code><div><span style=
=3D"color:#008">constexpr</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#008">double</span><span style=3D"color:#000"><br>&nbsp; &nbsp=
; long_variable_name_1 </span><span style=3D"color:#660">=3D</span><span st=
yle=3D"color:#000"> </span><span style=3D"color:#066">0</span><span style=
=3D"color:#660">,</span><span style=3D"color:#000"><br>&nbsp; &nbsp; long_v=
ariable_name_2 </span><span style=3D"color:#660">=3D</span><span style=3D"c=
olor:#000"> </span><span style=3D"color:#066">1</span><span style=3D"color:=
#660">,</span><span style=3D"color:#000"><br>&nbsp; &nbsp; long_variable_na=
me_3<br>&nbsp; &nbsp; &nbsp; &nbsp; </span><span style=3D"color:#660">=3D</=
span><span style=3D"color:#000"> long_variable_name_1<br>&nbsp; &nbsp; &nbs=
p; &nbsp; </span><span style=3D"color:#660">+</span><span style=3D"color:#0=
00"> long_variable_name_2</span><span style=3D"color:#660">;</span><span st=
yle=3D"color:#000"><br></span></div></code></div>instead of<br><div style=
=3D"background-color:rgb(250,250,250);border-color:rgb(187,187,187);border-=
style:solid;border-width:1px;word-wrap:break-word"><code><div><span style=
=3D"color:#008">constexpr</span><span style=3D"color:#000"> </span><span st=
yle=3D"color:#008">double</span><span style=3D"color:#000"> long_variable_n=
ame_1 </span><span style=3D"color:#660">=3D</span><span style=3D"color:#000=
"> </span><span style=3D"color:#066">0</span><span style=3D"color:#660">;</=
span><span style=3D"color:#000"><br></span><span style=3D"color:#008">const=
expr</span><span style=3D"color:#000"> </span><span style=3D"color:#008">do=
uble</span><span style=3D"color:#000"> long_variable_name_2 </span><span st=
yle=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><span style=
=3D"color:#066">1</span><span style=3D"color:#660">;</span><span style=3D"c=
olor:#000"><br></span><span style=3D"color:#008">constexpr</span><span styl=
e=3D"color:#000"> </span><span style=3D"color:#008">double</span><span styl=
e=3D"color:#000"> long_variable_name_3<br>&nbsp; &nbsp; </span><span style=
=3D"color:#660">=3D</span><span style=3D"color:#000"> long_variable_name_1<=
br>&nbsp; &nbsp; </span><span style=3D"color:#660">+</span><span style=3D"c=
olor:#000"> long_variable_name_2</span><span style=3D"color:#660">;</span><=
span style=3D"color:#000"><br></span></div></code></div><br>It would be nic=
e to be able to use similar syntax for metavariables, e.g.<br><div style=3D=
"background-color:rgb(250,250,250);border-color:rgb(187,187,187);border-sty=
le:solid;border-width:1px;word-wrap:break-word"><code><div><span style=3D"c=
olor:#008">using</span><span style=3D"color:#000"><br>&nbsp; &nbsp; long_me=
tavariable_name_1 </span><span style=3D"color:#660">=3D</span><span style=
=3D"color:#000"> </span><span style=3D"color:#008">int</span><span style=3D=
"color:#660">,</span><span style=3D"color:#000"><br>&nbsp; &nbsp; long_meta=
variable_name_2 </span><span style=3D"color:#660">=3D</span><span style=3D"=
color:#000"> </span><span style=3D"color:#008">double</span><span style=3D"=
color:#660">,</span><span style=3D"color:#000"><br>&nbsp; &nbsp; long_metav=
ariable_name_3 </span><span style=3D"color:#660">=3D</span><span style=3D"c=
olor:#000"> boost</span><span style=3D"color:#660">::</span><span style=3D"=
color:#000">mpl</span><span style=3D"color:#660">::...;</span><span style=
=3D"color:#000"><br></span></div></code></div>instead of<br><div style=3D"b=
ackground-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style=
:solid;border-width:1px;word-wrap:break-word"><code><div><span style=3D"col=
or:#008">using</span><span style=3D"color:#000"> long_metavariable_name_1 <=
/span><span style=3D"color:#660">=3D</span><span style=3D"color:#000"> </sp=
an><span style=3D"color:#008">int</span><span style=3D"color:#660">;</span>=
<span style=3D"color:#000"><br></span><span style=3D"color:#008">using</spa=
n><span style=3D"color:#000"> long_metavariable_name_2 </span><span style=
=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><span style=3D=
"color:#008">double</span><span style=3D"color:#660">;</span><span style=3D=
"color:#000"><br></span><span style=3D"color:#008">using</span><span style=
=3D"color:#000"> long_metavariable_name_3 </span><span style=3D"color:#660"=
>=3D</span><span style=3D"color:#000"> boost</span><span style=3D"color:#66=
0">::</span><span style=3D"color:#000">mpl</span><span style=3D"color:#660"=
>::...;</span></div></code></div>One could also put <div style=3D"backgroun=
d-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:solid;b=
order-width:1px;word-wrap:break-word"><code><div><span style=3D"color:#008"=
>template</span><span style=3D"color:#660">&lt;</span><span style=3D"color:=
#008">class</span><span style=3D"color:#000"> T</span><span style=3D"color:=
#660">&gt;</span><span style=3D"color:#000"> </span></div></code></div>in f=
ront of each using word.<br><br>For more complex cases<br><div style=3D"bac=
kground-color:rgb(250,250,250);border-color:rgb(187,187,187);border-style:s=
olid;border-width:1px;word-wrap:break-word"><code><div><span style=3D"color=
:#008">template</span><span style=3D"color:#660">&lt;</span><span style=3D"=
color:#008">class</span><span style=3D"color:#000"> A</span><span style=3D"=
color:#660">&gt;</span><span style=3D"color:#000"> </span><span style=3D"co=
lor:#008">using</span><span style=3D"color:#000"> long_metavariable_name_1 =
</span><span style=3D"color:#660">=3D</span><span style=3D"color:#000"> </s=
pan><span style=3D"color:#008">int</span><span style=3D"color:#660">;</span=
><span style=3D"color:#000"><br></span><span style=3D"color:#008">template<=
/span><span style=3D"color:#660">&lt;</span><span style=3D"color:#008">clas=
s</span><span style=3D"color:#000"> B</span><span style=3D"color:#660">&gt;=
</span><span style=3D"color:#000"> </span><span style=3D"color:#008">using<=
/span><span style=3D"color:#000"> long_metavariable_name_2 </span><span sty=
le=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><span style=
=3D"color:#008">double</span><span style=3D"color:#660">;</span><span style=
=3D"color:#000"><br></span><span style=3D"color:#008">template</span><span =
style=3D"color:#660">&lt;</span><span style=3D"color:#008">class</span><spa=
n style=3D"color:#000"> C</span><span style=3D"color:#660">&gt;</span><span=
 style=3D"color:#000"> </span><span style=3D"color:#008">using</span><span =
style=3D"color:#000"> long_metavariable_name_3 </span><span style=3D"color:=
#660">=3D</span><span style=3D"color:#000"> boost</span><span style=3D"colo=
r:#660">::</span><span style=3D"color:#000">mpl</span><span style=3D"color:=
#660">::...;</span><span style=3D"color:#000"><br></span></div></code></div=
>the syntax could be<br><div style=3D"background-color:rgb(250,250,250);bor=
der-color:rgb(187,187,187);border-style:solid;border-width:1px;word-wrap:br=
eak-word"><code><div><span style=3D"color:#008">using</span><span style=3D"=
color:#000"><br>&nbsp; &nbsp; </span><span style=3D"color:#008">template</s=
pan><span style=3D"color:#660">&lt;</span><span style=3D"color:#008">class<=
/span><span style=3D"color:#000"> A</span><span style=3D"color:#660">&gt;</=
span><span style=3D"color:#000"> long_metavariable_name_1 </span><span styl=
e=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><span style=
=3D"color:#008">int</span><span style=3D"color:#660">,</span><span style=3D=
"color:#000"><br>&nbsp; &nbsp; </span><span style=3D"color:#008">template</=
span><span style=3D"color:#660">&lt;</span><span style=3D"color:#008">class=
</span><span style=3D"color:#000"> B</span><span style=3D"color:#660">&gt;<=
/span><span style=3D"color:#000"> long_metavariable_name_2 </span><span sty=
le=3D"color:#660">=3D</span><span style=3D"color:#000"> </span><span style=
=3D"color:#008">double</span><span style=3D"color:#660">,</span><span style=
=3D"color:#000"><br>&nbsp; &nbsp; </span><span style=3D"color:#008">templat=
e</span><span style=3D"color:#660">&lt;</span><span style=3D"color:#008">cl=
ass</span><span style=3D"color:#000"> C</span><span style=3D"color:#660">&g=
t;</span><span style=3D"color:#000"> long_metavariable_name_3 </span><span =
style=3D"color:#660">=3D</span><span style=3D"color:#000"> boost</span><spa=
n style=3D"color:#660">::</span><span style=3D"color:#000">mpl</span><span =
style=3D"color:#660">::...;</span><span style=3D"color:#000"><br></span></d=
iv></code></div><br>Shared template parameters could be put in front of the=
 using word above and would be equal to<br><div style=3D"background-color:r=
gb(250,250,250);border-color:rgb(187,187,187);border-style:solid;border-wid=
th:1px;word-wrap:break-word"><code><div><div style=3D"border:1px solid rgb(=
187,187,187);word-wrap:break-word"><code><div><span style=3D"color:#008">te=
mplate</span><span style=3D"color:#660">&lt;</span><span style=3D"color:#00=
8">class T, class</span><span style=3D"color:#000"> A</span><span style=3D"=
color:#660">&gt;</span><span style=3D"color:#000"> </span><span style=3D"co=
lor:#008">using</span><span style=3D"color:#000"> long_metavariable_name_1 =
</span><span style=3D"color:#660">=3D</span><span style=3D"color:#000"> </s=
pan><span style=3D"color:#008">int</span><span style=3D"color:#660">;</span=
><span style=3D"color:#000"><br></span><span style=3D"color:#008">template<=
/span><span style=3D"color:#660">&lt;</span><span style=3D"color:#008"><cod=
e><code><span>class T, </span></code></code>class</span><span style=3D"colo=
r:#000"> B</span><span style=3D"color:#660">&gt;</span><span style=3D"color=
:#000"> </span><span style=3D"color:#008">using</span><span style=3D"color:=
#000"> long_metavariable_name_2 </span><span style=3D"color:#660">=3D</span=
><span style=3D"color:#000"> </span><span style=3D"color:#008">double</span=
><span style=3D"color:#660">;</span><span style=3D"color:#000"><br></span><=
span style=3D"color:#008">template</span><span style=3D"color:#660">&lt;</s=
pan><span style=3D"color:#008"><code><code><span>class T, </span></code></c=
ode>class</span><span style=3D"color:#000"> C</span><span style=3D"color:#6=
60">&gt;</span><span style=3D"color:#000"> </span><span style=3D"color:#008=
">using</span><span style=3D"color:#000"> long_metavariable_name_3 </span><=
span style=3D"color:#660">=3D</span><span style=3D"color:#000"> boost</span=
><span style=3D"color:#660">::</span><span style=3D"color:#000">mpl</span><=
span style=3D"color:#660">::...;</span><span style=3D"color:#000"><br></spa=
n></div></code></div><span style=3D"color:#660"></span></div></code></div><=
br>Is something like this possible? At least it seems to only add new synta=
x for existing features.<br><br>Ilja Honkonen<br></div></blockquote></div><=
/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&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_3914_1351343213.1424194233608--
------=_Part_3913_1638260200.1424194233608--

.


Author: Nicol Bolas <jmckesson@gmail.com>
Date: Tue, 17 Feb 2015 11:20:55 -0800 (PST)
Raw View
------=_Part_25_452164298.1424200855590
Content-Type: multipart/alternative;
 boundary="----=_Part_26_1728213400.1424200855590"

------=_Part_26_1728213400.1424200855590
Content-Type: text/plain; charset=UTF-8



On Tuesday, February 17, 2015 at 12:09:13 PM UTC-5, Ilja Honkonen wrote:
>
> > So you want to add a language feature, just to avoid typing the keyword
> > "using?" That sounds like a massive waste of the committee's time.
>
> I don't know whether the ability to avoid typing the keyword double was
> a conscious decision (in K&R or before, after?), if it wasn't then I
> agree that this probably wouldn't be worth the apparently large effort,
> but if it was then similar reasoning might apply here.
> Ilja
>

Typenames aren't restricted to just "double". They can be long, arbitrary,
and unwieldy namespace-qualified things. While "using" is always 5
characters long.

Also, I don't particularly agree with putting multiple variable definitions
in a single statement to begin with. It's certainly terse, but it's
needlessly terse. Plus, it doesn't work well with 'auto', which is what a
lot of my variable definitions are using nowadays.

--

---
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_26_1728213400.1424200855590
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Tuesday, February 17, 2015 at 12:09:13 PM UTC-5=
, Ilja Honkonen wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;=
margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">&gt; So =
you want to add a language feature, just to avoid typing the keyword
<br>&gt; "using?" That sounds like a massive waste of the committee's time.
<br>
<br>I don't know whether the ability to avoid typing the keyword double was=
=20
<br>a conscious decision (in K&amp;R or before, after?), if it wasn't then =
I=20
<br>agree that this probably wouldn't be worth the apparently large effort,=
=20
<br>but if it was then similar reasoning might apply here.
<br>Ilja
<br></blockquote><div><br>Typenames aren't restricted to just "double". The=
y can be long, arbitrary, and unwieldy namespace-qualified things. While "u=
sing" is always 5 characters long.<br><br>Also, I don't particularly agree =
with putting multiple variable definitions in a single statement to begin w=
ith. It's certainly terse, but it's needlessly terse. Plus, it doesn't work=
 well with 'auto', which is what a lot of my variable definitions are using=
 nowadays.<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&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_26_1728213400.1424200855590--
------=_Part_25_452164298.1424200855590--

.


Author: Ilja Honkonen <ilja.j.honkonen@nasa.gov>
Date: Tue, 17 Feb 2015 14:34:06 -0500
Raw View
> Don't really see this as necessary, but if you want that syntax,
> wouldn't it make more sense to do something like this?:
> |
> template<classX>
> using Type1=expr1<X>,
>  Type2=expr2<X>,
>  Type3=expr3<X>;
> |

Yes, if the same parameter is given to each expression that's what I
suggested. If each one gets (different/additional) template parameters
those would have to come after using and before TypeN I guess.

--

---
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: Ilja Honkonen <ilja.j.honkonen@nasa.gov>
Date: Tue, 17 Feb 2015 14:55:35 -0500
Raw View
>     I don't know whether the ability to avoid typing the keyword double was
>     a conscious decision (in K&R or before, after?), if it wasn't then I
>     agree that this probably wouldn't be worth the apparently large effort,
>     but if it was then similar reasoning might apply here.
>
> Typenames aren't restricted to just "double". They can be long,
> arbitrary, and unwieldy namespace-qualified things. While "using" is
> always 5 characters long.

If I understood your argument correctly the same applies to regular
variables: float is always 5 chars long while the value assigned to each
variable can come from a long, namespace-qualified, etc. function.

> Also, I don't particularly agree with putting multiple variable
> definitions in a single statement to begin with. It's certainly terse,
> but it's needlessly terse. Plus, it doesn't work well with 'auto', which
> is what a lot of my variable definitions are using nowadays.

Mine too and in cases where several variables are of the same type a
single auto shows that quickly. In the syntax I propose the same would
hold for template arguments given before using which might also improve
readability.

--

---
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: Nevin Liber <nevin@eviloverlord.com>
Date: Tue, 17 Feb 2015 13:57:43 -0600
Raw View
--001a11c35460192094050f4e20d5
Content-Type: text/plain; charset=UTF-8

On 17 February 2015 at 13:55, Ilja Honkonen <ilja.j.honkonen@nasa.gov>
wrote:

> Mine too and in cases where several variables are of the same type a
> single auto shows that quickly.


If five variables have the same type, that type ought to have a name, and
it isn't that hard with using or typedef to give it a name.

This proposal also discourages declaring variables at the point of use.
--
 Nevin ":-)" Liber  <mailto:nevin@eviloverlord.com>  (847) 691-1404

--

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

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

<div dir=3D"ltr">On 17 February 2015 at 13:55, Ilja Honkonen <span dir=3D"l=
tr">&lt;<a href=3D"mailto:ilja.j.honkonen@nasa.gov" target=3D"_blank">ilja.=
j.honkonen@nasa.gov</a>&gt;</span> wrote:<br><div class=3D"gmail_extra"><di=
v class=3D"gmail_quote"><blockquote class=3D"gmail_quote" style=3D"margin:0=
 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=3D""></s=
pan>Mine too and in cases where several variables are of the same type a si=
ngle auto shows that quickly. </blockquote><div><br></div><div>If five vari=
ables have the same type, that type ought to have a name, and it isn&#39;t =
that hard with using or typedef to give it a name.<br><br>This proposal als=
o discourages declaring variables at the point of use.<br></div></div>-- <b=
r><div class=3D"gmail_signature">=C2=A0Nevin &quot;:-)&quot; Liber=C2=A0 &l=
t;mailto:<a href=3D"mailto:nevin@eviloverlord.com" target=3D"_blank">nevin@=
eviloverlord.com</a>&gt;=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 - 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 />

--001a11c35460192094050f4e20d5--

.


Author: Ville Voutilainen <ville.voutilainen@gmail.com>
Date: Tue, 17 Feb 2015 22:01:34 +0200
Raw View
On 17 February 2015 at 21:57, Nevin Liber <nevin@eviloverlord.com> wrote:
> This proposal also discourages declaring variables at the point of use.

I don't think you always have the luxury of declaring "metavariables"
at the point of use.
Having said that, I find the motivation for the proposal fairly
unconvincing, and I find
the importance of making introducing "metavariables" more convenient unlikely to
be worth the cost. The benefit of this change seems very small, very
small indeed.

--

---
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: Nicol Bolas <jmckesson@gmail.com>
Date: Thu, 19 Feb 2015 07:42:26 -0800 (PST)
Raw View
------=_Part_487_1057232927.1424360546624
Content-Type: multipart/alternative;
 boundary="----=_Part_488_634108811.1424360546625"

------=_Part_488_634108811.1424360546625
Content-Type: text/plain; charset=UTF-8



On Tuesday, February 17, 2015 at 2:55:23 PM UTC-5, Ilja Honkonen wrote:
>
> >     I don't know whether the ability to avoid typing the keyword double
> was
> >     a conscious decision (in K&R or before, after?), if it wasn't then I
> >     agree that this probably wouldn't be worth the apparently large
> effort,
> >     but if it was then similar reasoning might apply here.
> >
> > Typenames aren't restricted to just "double". They can be long,
> > arbitrary, and unwieldy namespace-qualified things. While "using" is
> > always 5 characters long.
>
> If I understood your argument correctly the same applies to regular
> variables: float is always 5 chars long while the value assigned to each
> variable can come from a long, namespace-qualified, etc. function.
>

.... what?

My point was that what you're saving in the variable case is itself
*variable*. That is, it changes from case to case. The difference is this:

Here::Is::A::Very::Long::Typename a = ...;
Here::Is::A::Very::Long::Typename b = ...;
Here::Is::A::Very::Long::Typename c = ...;
Here::Is::A::Very::Long::Typename d = ...;

vs.

Here::Is::A::Very::Long::Typename
 a = ...,
 b = ...,
 c = ...,
 d = ...;

In this case, you're saving a lot of keystrokes. With your "metavariable"
case, the only thing you save is typing "using" for each variable. That's a
far smaller number of keystrokes.

So there's just not much of an incentive to having it in the language.


>
> > Also, I don't particularly agree with putting multiple variable
> > definitions in a single statement to begin with. It's certainly terse,
> > but it's needlessly terse. Plus, it doesn't work well with 'auto', which
> > is what a lot of my variable definitions are using nowadays.
>
> Mine too and in cases where several variables are of the same type a
> single auto shows that quickly. In the syntax I propose the same would
> hold for template arguments given before using which might also improve
> readability.
>

That constitutes an actual use case, as it saves more than just typing a
keyword.

You should lead with that next time.

Granted, I still don't consider it a good idea. But it would actually be
something useful.

--

---
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_488_634108811.1424360546625
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><br>On Tuesday, February 17, 2015 at 2:55:23 PM UTC-5,=
 Ilja Honkonen wrote:<blockquote class=3D"gmail_quote" style=3D"margin: 0;m=
argin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;">&gt; &nbs=
p; &nbsp; I don't know whether the ability to avoid typing the keyword doub=
le was
<br>&gt; &nbsp; &nbsp; a conscious decision (in K&amp;R or before, after?),=
 if it wasn't then I
<br>&gt; &nbsp; &nbsp; agree that this probably wouldn't be worth the appar=
ently large effort,
<br>&gt; &nbsp; &nbsp; but if it was then similar reasoning might apply her=
e.
<br>&gt;
<br>&gt; Typenames aren't restricted to just "double". They can be long,
<br>&gt; arbitrary, and unwieldy namespace-qualified things. While "using" =
is
<br>&gt; always 5 characters long.
<br>
<br>If I understood your argument correctly the same applies to regular=20
<br>variables: float is always 5 chars long while the value assigned to eac=
h=20
<br>variable can come from a long, namespace-qualified, etc. function.<br><=
/blockquote><div><br>... what?<br><br>My point was that what you're saving =
in the variable case is itself <i>variable</i>. That is, it changes from ca=
se to case. The difference is this:<br><br>Here::Is::A::Very::Long::Typenam=
e a =3D ...;<br>Here::Is::A::Very::Long::Typename b =3D ...;<br>Here::Is::A=
::Very::Long::Typename c =3D ...;<br>Here::Is::A::Very::Long::Typename d =
=3D ...;<br><br>vs.<br><br>Here::Is::A::Very::Long::Typename<br>&nbsp;a =3D=
 ...,<br>&nbsp;b =3D ...,<br>&nbsp;c =3D ...,<br>&nbsp;d =3D ...;<br><br>In=
 this case, you're saving a lot of keystrokes. With your "metavariable" cas=
e, the only thing you save is typing "using" for each variable. That's a fa=
r smaller number of keystrokes.<br><br>So there's just not much of an incen=
tive to having it in the language.<br>&nbsp;</div><blockquote class=3D"gmai=
l_quote" style=3D"margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;=
padding-left: 1ex;">
<br>&gt; Also, I don't particularly agree with putting multiple variable
<br>&gt; definitions in a single statement to begin with. It's certainly te=
rse,
<br>&gt; but it's needlessly terse. Plus, it doesn't work well with 'auto',=
 which
<br>&gt; is what a lot of my variable definitions are using nowadays.
<br>
<br>Mine too and in cases where several variables are of the same type a=20
<br>single auto shows that quickly. In the syntax I propose the same would=
=20
<br>hold for template arguments given before using which might also improve=
=20
<br>readability.
<br></blockquote><div><br>That constitutes an actual use case, as it saves =
more than just typing a keyword.<br><br>You should lead with that next time=
..<br><br>Granted, I still don't consider it a good idea. But it would actua=
lly be something useful.<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&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_488_634108811.1424360546625--
------=_Part_487_1057232927.1424360546624--

.


Author: Douglas Boffey <douglas.boffey@gmail.com>
Date: Thu, 19 Feb 2015 16:34:48 +0000
Raw View
Or

namespace Here::Is::A::Very::Long {
  Typename a = ...;
  Typename b = ...;
  Typename c = ...;
  // etc
}

On 2/19/15, Nicol Bolas <jmckesson@gmail.com> wrote:
>
>
> On Tuesday, February 17, 2015 at 2:55:23 PM UTC-5, Ilja Honkonen wrote:
>>
>> >     I don't know whether the ability to avoid typing the keyword double
>> >
>> was
>> >     a conscious decision (in K&R or before, after?), if it wasn't then I
>> >
>> >     agree that this probably wouldn't be worth the apparently large
>> effort,
>> >     but if it was then similar reasoning might apply here.
>> >
>> > Typenames aren't restricted to just "double". They can be long,
>> > arbitrary, and unwieldy namespace-qualified things. While "using" is
>> > always 5 characters long.
>>
>> If I understood your argument correctly the same applies to regular
>> variables: float is always 5 chars long while the value assigned to each
>> variable can come from a long, namespace-qualified, etc. function.
>>
>
> ... what?
>
> My point was that what you're saving in the variable case is itself
> *variable*. That is, it changes from case to case. The difference is this:
>
> Here::Is::A::Very::Long::Typename a = ...;
> Here::Is::A::Very::Long::Typename b = ...;
> Here::Is::A::Very::Long::Typename c = ...;
> Here::Is::A::Very::Long::Typename d = ...;
>
> vs.
>
> Here::Is::A::Very::Long::Typename
>  a = ...,
>  b = ...,
>  c = ...,
>  d = ...;
>
> In this case, you're saving a lot of keystrokes. With your "metavariable"
> case, the only thing you save is typing "using" for each variable. That's a
>
> far smaller number of keystrokes.
>
> So there's just not much of an incentive to having it in the language.
>
>
>>
>> > Also, I don't particularly agree with putting multiple variable
>> > definitions in a single statement to begin with. It's certainly terse,
>> > but it's needlessly terse. Plus, it doesn't work well with 'auto', which
>> >
>> > is what a lot of my variable definitions are using nowadays.
>>
>> Mine too and in cases where several variables are of the same type a
>> single auto shows that quickly. In the syntax I propose the same would
>> hold for template arguments given before using which might also improve
>> readability.
>>
>
> That constitutes an actual use case, as it saves more than just typing a
> keyword.
>
> You should lead with that next time.
>
> Granted, I still don't consider it a good idea. But it would actually be
> something useful.
>
> --
>
> ---
> 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/.

.


Author: Tony V E <tvaneerd@gmail.com>
Date: Fri, 20 Feb 2015 15:45:07 -0500
Raw View
--047d7b8746c2b7cff5050f8b2069
Content-Type: text/plain; charset=UTF-8

On Thu, Feb 19, 2015 at 11:34 AM, Douglas Boffey <douglas.boffey@gmail.com>
wrote:

> Or
>
> namespace Here::Is::A::Very::Long {
>   Typename a = ...;
>   Typename b = ...;
>   Typename c = ...;
>   // etc
> }
>
>
That puts a,b,c inside that namespace, so not the same.
Also doesn't help with cases like HereIsAVeryLongTypename.

Having said that, I don't think the proposal is worth doing.  Not enough
bang for the buck.  In fact I think it is "negative bang" - ie I don't want
multiple declarations per line.

Tony


On 2/19/15, Nicol Bolas <jmckesson@gmail.com> wrote:
> >
> >
> > On Tuesday, February 17, 2015 at 2:55:23 PM UTC-5, Ilja Honkonen wrote:
> >>
> >> >     I don't know whether the ability to avoid typing the keyword
> double
> >> >
> >> was
> >> >     a conscious decision (in K&R or before, after?), if it wasn't
> then I
> >> >
> >> >     agree that this probably wouldn't be worth the apparently large
> >> effort,
> >> >     but if it was then similar reasoning might apply here.
> >> >
> >> > Typenames aren't restricted to just "double". They can be long,
> >> > arbitrary, and unwieldy namespace-qualified things. While "using" is
> >> > always 5 characters long.
> >>
> >> If I understood your argument correctly the same applies to regular
> >> variables: float is always 5 chars long while the value assigned to each
> >> variable can come from a long, namespace-qualified, etc. function.
> >>
> >
> > ... what?
> >
> > My point was that what you're saving in the variable case is itself
> > *variable*. That is, it changes from case to case. The difference is
> this:
> >
> > Here::Is::A::Very::Long::Typename a = ...;
> > Here::Is::A::Very::Long::Typename b = ...;
> > Here::Is::A::Very::Long::Typename c = ...;
> > Here::Is::A::Very::Long::Typename d = ...;
> >
> > vs.
> >
> > Here::Is::A::Very::Long::Typename
> >  a = ...,
> >  b = ...,
> >  c = ...,
> >  d = ...;
> >
> > In this case, you're saving a lot of keystrokes. With your "metavariable"
> > case, the only thing you save is typing "using" for each variable.
> That's a
> >
> > far smaller number of keystrokes.
> >
> > So there's just not much of an incentive to having it in the language.
> >
> >
> >>
> >> > Also, I don't particularly agree with putting multiple variable
> >> > definitions in a single statement to begin with. It's certainly terse,
> >> > but it's needlessly terse. Plus, it doesn't work well with 'auto',
> which
> >> >
> >> > is what a lot of my variable definitions are using nowadays.
> >>
> >> Mine too and in cases where several variables are of the same type a
> >> single auto shows that quickly. In the syntax I propose the same would
> >> hold for template arguments given before using which might also improve
> >> readability.
> >>
> >
> > That constitutes an actual use case, as it saves more than just typing a
> > keyword.
> >
> > You should lead with that next time.
> >
> > Granted, I still don't consider it a good idea. But it would actually be
> > something useful.
> >
> > --
> >
> > ---
> > 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/.
>

--

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

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

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Feb 19, 2015 at 11:34 AM, Douglas Boffey <span dir=3D"ltr">&lt;=
<a href=3D"mailto:douglas.boffey@gmail.com" target=3D"_blank">douglas.boffe=
y@gmail.com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" styl=
e=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Or<br>
<br>
namespace Here::Is::A::Very::Long {<br>
=C2=A0 Typename a =3D ...;<br>
=C2=A0 Typename b =3D ...;<br>
=C2=A0 Typename c =3D ...;<br>
=C2=A0 // etc<br>
<span class=3D"">}<br>
<br></span></blockquote><div><br></div><div>That puts a,b,c inside that nam=
espace, so not the same.<br></div><div>Also doesn&#39;t help with cases lik=
e HereIsAVeryLongTypename.<br><br></div><div>Having said that, I don&#39;t =
think the proposal is worth doing.=C2=A0 Not enough bang for the buck.=C2=
=A0 In fact I think it is &quot;negative bang&quot; - ie I don&#39;t want m=
ultiple declarations per line.<br><br></div><div>Tony<br><br></div><div> <b=
r></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border=
-left:1px #ccc solid;padding-left:1ex"><span class=3D"">
On 2/19/15, Nicol Bolas &lt;<a href=3D"mailto:jmckesson@gmail.com">jmckesso=
n@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt;<br>
&gt; On Tuesday, February 17, 2015 at 2:55:23 PM UTC-5, Ilja Honkonen wrote=
:<br>
&gt;&gt;<br>
&gt;&gt; &gt;=C2=A0 =C2=A0 =C2=A0I don&#39;t know whether the ability to av=
oid typing the keyword double<br>
&gt;&gt; &gt;<br>
&gt;&gt; was<br>
&gt;&gt; &gt;=C2=A0 =C2=A0 =C2=A0a conscious decision (in K&amp;R or before=
, after?), if it wasn&#39;t then I<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;=C2=A0 =C2=A0 =C2=A0agree that this probably wouldn&#39;t be w=
orth the apparently large<br>
&gt;&gt; effort,<br>
&gt;&gt; &gt;=C2=A0 =C2=A0 =C2=A0but if it was then similar reasoning might=
 apply here.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Typenames aren&#39;t restricted to just &quot;double&quot;. T=
hey can be long,<br>
&gt;&gt; &gt; arbitrary, and unwieldy namespace-qualified things. While &qu=
ot;using&quot; is<br>
&gt;&gt; &gt; always 5 characters long.<br>
&gt;&gt;<br>
&gt;&gt; If I understood your argument correctly the same applies to regula=
r<br>
&gt;&gt; variables: float is always 5 chars long while the value assigned t=
o each<br>
&gt;&gt; variable can come from a long, namespace-qualified, etc. function.=
<br>
&gt;&gt;<br>
&gt;<br>
&gt; ... what?<br>
&gt;<br>
&gt; My point was that what you&#39;re saving in the variable case is itsel=
f<br>
</span>&gt; *variable*. That is, it changes from case to case. The differen=
ce is this:<br>
<div class=3D"HOEnZb"><div class=3D"h5">&gt;<br>
&gt; Here::Is::A::Very::Long::Typename a =3D ...;<br>
&gt; Here::Is::A::Very::Long::Typename b =3D ...;<br>
&gt; Here::Is::A::Very::Long::Typename c =3D ...;<br>
&gt; Here::Is::A::Very::Long::Typename d =3D ...;<br>
&gt;<br>
&gt; vs.<br>
&gt;<br>
&gt; Here::Is::A::Very::Long::Typename<br>
&gt;=C2=A0 a =3D ...,<br>
&gt;=C2=A0 b =3D ...,<br>
&gt;=C2=A0 c =3D ...,<br>
&gt;=C2=A0 d =3D ...;<br>
&gt;<br>
&gt; In this case, you&#39;re saving a lot of keystrokes. With your &quot;m=
etavariable&quot;<br>
&gt; case, the only thing you save is typing &quot;using&quot; for each var=
iable. That&#39;s a<br>
&gt;<br>
&gt; far smaller number of keystrokes.<br>
&gt;<br>
&gt; So there&#39;s just not much of an incentive to having it in the langu=
age.<br>
&gt;<br>
&gt;<br>
&gt;&gt;<br>
&gt;&gt; &gt; Also, I don&#39;t particularly agree with putting multiple va=
riable<br>
&gt;&gt; &gt; definitions in a single statement to begin with. It&#39;s cer=
tainly terse,<br>
&gt;&gt; &gt; but it&#39;s needlessly terse. Plus, it doesn&#39;t work well=
 with &#39;auto&#39;, which<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; is what a lot of my variable definitions are using nowadays.<=
br>
&gt;&gt;<br>
&gt;&gt; Mine too and in cases where several variables are of the same type=
 a<br>
&gt;&gt; single auto shows that quickly. In the syntax I propose the same w=
ould<br>
&gt;&gt; hold for template arguments given before using which might also im=
prove<br>
&gt;&gt; readability.<br>
&gt;&gt;<br>
&gt;<br>
&gt; That constitutes an actual use case, as it saves more than just typing=
 a<br>
&gt; keyword.<br>
&gt;<br>
&gt; You should lead with that next time.<br>
&gt;<br>
&gt; Granted, I still don&#39;t consider it a good idea. But it would actua=
lly be<br>
&gt; something useful.<br>
&gt;<br>
&gt; --<br>
&gt;<br>
&gt; ---<br>
&gt; You received this message because you are subscribed to the Google Gro=
ups<br>
&gt; &quot;ISO C++ Standard - Future Proposals&quot; group.<br>
&gt; To unsubscribe from this group and stop receiving emails from it, send=
 an<br>
&gt; email to <a href=3D"mailto:std-proposals%2Bunsubscribe@isocpp.org">std=
-proposals+unsubscribe@isocpp.org</a>.<br>
&gt; To post to this group, send email to <a href=3D"mailto:std-proposals@i=
socpp.org">std-proposals@isocpp.org</a>.<br>
&gt; Visit this group at<br>
&gt; <a href=3D"http://groups.google.com/a/isocpp.org/group/std-proposals/"=
 target=3D"_blank">http://groups.google.com/a/isocpp.org/group/std-proposal=
s/</a>.<br>
&gt;<br>
<br>
--<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%2Bunsubscribe@isocpp.org">std-propo=
sals+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/" target=3D"_blank">http://groups.google.com/a/isocpp.org/gro=
up/std-proposals/</a>.<br>
</div></div></blockquote></div><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&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 />

--047d7b8746c2b7cff5050f8b2069--

.