Topic: Operators for types


Author: =?UTF-8?Q?Andr=C3=A9?= <andre@andre4all.de>
Date: Sat, 1 Mar 2014 04:15:09 -0800 (PST)
Raw View
------=_Part_1691_9553273.1393676109816
Content-Type: text/plain; charset=UTF-8

I was thinking about a compile time only way to construct a formatting
generator like in Boost the Spirit.Karma generators. I was testing how I
could combine classes the same way with a shift operator and I came up with
this code.

struct TypeA {
    TypeA() = delete;
};

struct TypeB {
    TypeB() = delete;
};

template <typename A, typename B>
struct Combined {
    Combined() = delete;
};

template <typename A, typename B>
Combined<A, B> operator<<(A const&, B const&); // no definition needed

template <typename A, typename B>
using LShift = decltype(std::declval<TypeA>() << std::declval<TypeB>());


// user code
using Test1 = decltype(std::declval<TypeA>() << std::declval<TypeB>());
using Test2 = LShift<TypeA, TypeB>;

I think it would be nice if an user could write

using Test3 = TypeA << TypeB;

If this is available for all operators it would make compile time
programming (Templates) similar to runtime programming (Normal code)
syntactic wise.

--

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

<div dir=3D"ltr">I was thinking about a compile time only way to construct =
a formatting generator like in Boost the Spirit.Karma generators. I was tes=
ting how I could combine classes the same way with a shift operator and I c=
ame up with this code.<br><br><div class=3D"prettyprint" style=3D"backgroun=
d-color: rgb(250, 250, 250); border-color: rgb(187, 187, 187); border-style=
: solid; border-width: 1px; word-wrap: break-word;"><code class=3D"prettypr=
int"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">struct</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-prett=
ify">TypeA</span><span style=3D"color: #000;" class=3D"styled-by-prettify">=
 </span><span style=3D"color: #660;" class=3D"styled-by-prettify">{</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"><br>&nbsp; &nbsp; =
</span><span style=3D"color: #606;" class=3D"styled-by-prettify">TypeA</spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">()</span><span =
style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"=
color: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #008;" cl=
ass=3D"styled-by-prettify">delete</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: #660;" class=3D"styled-by-p=
rettify">};</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
><br><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify">s=
truct</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span style=3D"color: #606;" class=3D"styled-by-prettify">TypeB</span><s=
pan style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">{</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"><br>&nbsp; &nbsp; </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">TypeB</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">()</span><span style=3D"color: #0=
00;" class=3D"styled-by-prettify"> </span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"st=
yled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">delete</span><span style=3D"color: #660;" class=3D"styled-by-prett=
ify">;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br>=
</span><span style=3D"color: #660;" class=3D"styled-by-prettify">};</span><=
span style=3D"color: #000;" class=3D"styled-by-prettify"><br><br></span><sp=
an style=3D"color: #008;" class=3D"styled-by-prettify">template</span><span=
 style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D=
"color: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">typename</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> A</span><span style=3D"color: #660;" c=
lass=3D"styled-by-prettify">,</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-=
prettify">typename</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> B</span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
&gt;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></=
span><span style=3D"color: #008;" class=3D"styled-by-prettify">struct</span=
><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span st=
yle=3D"color: #606;" class=3D"styled-by-prettify">Combined</span><span styl=
e=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"colo=
r: #660;" class=3D"styled-by-prettify">{</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify"><br>&nbsp; &nbsp; </span><span style=3D"color=
: #606;" class=3D"styled-by-prettify">Combined</span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">()</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">=3D</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-prettif=
y">delete</span><span 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"color: #660;" class=3D"styled-by-prettify">};</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify"><br><br></span><span sty=
le=3D"color: #008;" class=3D"styled-by-prettify">template</span><span style=
=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color=
: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #008=
;" class=3D"styled-by-prettify">typename</span><span style=3D"color: #000;"=
 class=3D"styled-by-prettify"> A</span><span style=3D"color: #660;" class=
=3D"styled-by-prettify">,</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-pret=
tify">typename</span><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy"> B</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span=
><span style=3D"color: #606;" class=3D"styled-by-prettify">Combined</span><=
span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><span s=
tyle=3D"color: #000;" class=3D"styled-by-prettify">A</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> B</span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">&gt;</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-=
prettify">operator</span><span style=3D"color: #660;" class=3D"styled-by-pr=
ettify">&lt;&lt;(</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify">A </span><span style=3D"color: #008;" class=3D"styled-by-prettify">c=
onst</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&amp;,=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> B </span>=
<span style=3D"color: #008;" class=3D"styled-by-prettify">const</span><span=
 style=3D"color: #660;" class=3D"styled-by-prettify">&amp;);</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"co=
lor: #800;" class=3D"styled-by-prettify">// no definition needed</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"><br><br></span><span =
style=3D"color: #008;" class=3D"styled-by-prettify">template</span><span st=
yle=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #=
008;" class=3D"styled-by-prettify">typename</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> A</span><span style=3D"color: #660;" clas=
s=3D"styled-by-prettify">,</span><span style=3D"color: #000;" class=3D"styl=
ed-by-prettify"> </span><span style=3D"color: #008;" class=3D"styled-by-pre=
ttify">typename</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"> B</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt=
;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></spa=
n><span style=3D"color: #008;" class=3D"styled-by-prettify">using</span><sp=
an style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">LShift</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #6=
60;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"> </span><span style=3D"color: #008;" class=3D"st=
yled-by-prettify">decltype</span><span style=3D"color: #660;" class=3D"styl=
ed-by-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify">std</span><span style=3D"color: #660;" class=3D"styled-by-prettify">=
::</span><span style=3D"color: #000;" class=3D"styled-by-prettify">declval<=
/span><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span>=
<span style=3D"color: #606;" class=3D"styled-by-prettify">TypeA</span><span=
 style=3D"color: #660;" class=3D"styled-by-prettify">&gt;()</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">&lt;&lt;</span><span style=3D"color=
: #000;" class=3D"styled-by-prettify"> std</span><span style=3D"color: #660=
;" class=3D"styled-by-prettify">::</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify">declval</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">&lt;</span><span style=3D"color: #606;" class=3D"style=
d-by-prettify">TypeB</span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">&gt;());</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"><br><br><br></span><span style=3D"color: #800;" class=3D"styled-by-=
prettify">// user code</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-pret=
tify">using</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">Test1</s=
pan><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"> </span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">decltype</span><span style=3D"color: =
#660;" class=3D"styled-by-prettify">(</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify">std</span><span style=3D"color: #660;" class=3D"=
styled-by-prettify">::</span><span style=3D"color: #000;" class=3D"styled-b=
y-prettify">declval</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">&lt;</span><span style=3D"color: #606;" class=3D"styled-by-prettif=
y">TypeA</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&g=
t;()</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </spa=
n><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;&lt;</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> std</span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">::</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify">declval</span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #=
606;" class=3D"styled-by-prettify">TypeB</span><span style=3D"color: #660;"=
 class=3D"styled-by-prettify">&gt;());</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"><br></span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">using</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-=
prettify">Test2</span><span style=3D"color: #000;" class=3D"styled-by-prett=
ify"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><sp=
an style=3D"color: #606;" class=3D"styled-by-prettify">LShift</span><span s=
tyle=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">TypeA</span><span style=3D"c=
olor: #660;" class=3D"styled-by-prettify">,</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">TypeB</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">&gt;;</span><span style=3D"color: #000;" class=3D"styled=
-by-prettify"><br></span></div></code></div><br>I think it would be nice if=
 an user could write<br><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"prettyprin=
t"><div class=3D"subprettyprint"><span style=3D"color: #008;" class=3D"styl=
ed-by-prettify">using</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify=
">Test3</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </=
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: #606;" class=3D"styled-by-prettify">TypeA</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">&lt;&lt;</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">TypeB</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">;</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"><br></span></div></code></div><br>If this is available for all op=
erators it would make compile time programming (Templates) similar to runti=
me programming (Normal code) syntactic wise.<br></div>

<p></p>

-- <br />
&nbsp;<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 std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<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_1691_9553273.1393676109816--

.


Author: "=?utf-8?B?YmlsbHkub25lYWxAZ21haWwuY29t?=" <billy.oneal@gmail.com>
Date: Sat, 01 Mar 2014 07:04:05 -0800
Raw View
------=_Part_0_1393686245686
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

What's wrong with

using Test3 =3D decltype( declval<TypeA>() << declval<TypeB>() );

?

Sent from a touchscreen. Please excuse the brevity and tpyos.

----- Reply message -----
From: "Andr=C3=A9" <andre@andre4all.de>
To: <std-proposals@isocpp.org>
Subject: [std-proposals] Operators for types
Date: Sat, Mar 1, 2014 4:15 AM

I was thinking about a compile time only way to construct a formatting gene=
rator like in Boost the Spirit.Karma generators. I was testing how I could =
combine classes the same way with a shift operator and I came up with this =
code.

struct TypeA {
TypeA() =3D delete;
};

struct TypeB {
TypeB() =3D delete;
};

template <typename A, typename B>
struct Combined {
Combined() =3D delete;
};

template <typename A, typename B>
Combined<A, B> operator<<(A const&, B const&); // no definition needed

template <typename A, typename B>
using LShift =3D decltype(std::declval<TypeA>() << std::declval<TypeB>());


// user code
using Test1 =3D decltype(std::declval<TypeA>() << std::declval<TypeB>());
using Test2 =3D LShift<TypeA, TypeB>;



I think it would be nice if an user could write

using Test3 =3D TypeA << TypeB;



If this is available for all operators it would make compile time programmi=
ng (Templates) similar to runtime programming (Normal code) syntactic wise.




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

--=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_0_1393686245686
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<div style=3D"font-size: 12pt; font-family: Calibri,sans-serif;"><div>What'=
s wrong with</div><div><br></div><div>using Test3 =3D decltype( declval&lt;=
TypeA&gt;() &lt;&lt; declval&lt;TypeB&gt;() );</div><div><br></div><div>?</=
div><div><br></div><div>Sent from a touchscreen. Please excuse the brevity =
and tpyos.</div><br><div id=3D"htc_header">----- Reply message -----<br>Fro=
m: &quot;Andr=C3=A9&quot; &lt;andre@andre4all.de&gt;<br>To: &lt;std-proposa=
ls@isocpp.org&gt;<br>Subject: [std-proposals] Operators for types<br>Date: =
Sat, Mar 1, 2014 4:15 AM</div></div><br><div dir=3D"ltr">I was thinking abo=
ut a compile time only way to construct a formatting generator like in Boos=
t the Spirit.Karma generators. I was testing how I could combine classes th=
e same way with a shift operator and I came up with this code.<br><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-wr=
ap: break-word;"><code class=3D"prettyprint"><div class=3D"subprettyprint">=
<span style=3D"color: #008;" class=3D"styled-by-prettify">struct</span><spa=
n style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=
=3D"color: #606;" class=3D"styled-by-prettify">TypeA</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">{</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br>&nbsp; &nbsp; </span><span style=3D"color: #606=
;" class=3D"styled-by-prettify">TypeA</span><span style=3D"color: #660;" cl=
ass=3D"styled-by-prettify">()</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> </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">delete=
</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: #660;" class=3D"styled-by-prettify">};</span><span style=3D"c=
olor: #000;" class=3D"styled-by-prettify"><br><br></span><span style=3D"col=
or: #008;" class=3D"styled-by-prettify">struct</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" cl=
ass=3D"styled-by-prettify">TypeB</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">{</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"><br>&nbsp; &nbsp; </span><span style=3D"color: #606;" class=3D"styled=
-by-prettify">TypeB</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">()</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span s=
tyle=3D"color: #008;" class=3D"styled-by-prettify">delete</span><span 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"color: #660=
;" class=3D"styled-by-prettify">};</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"><br><br></span><span style=3D"color: #008;" class=
=3D"styled-by-prettify">template</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">&lt;</span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">typename</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"> A</span><span style=3D"color: #660;" class=3D"styled-by-prettify">,=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><s=
pan style=3D"color: #008;" class=3D"styled-by-prettify">typename</span><spa=
n 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"><br></span><span style=3D"color: #=
008;" class=3D"styled-by-prettify">struct</span><span style=3D"color: #000;=
" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">Combined</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">{</span><span style=3D"color: #000;" class=3D"styled-by-pret=
tify"><br>&nbsp; &nbsp; </span><span style=3D"color: #606;" class=3D"styled=
-by-prettify">Combined</span><span style=3D"color: #660;" class=3D"styled-b=
y-prettify">()</span><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy"> </span><span style=3D"color: #660;" class=3D"styled-by-prettify">=3D</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><spa=
n style=3D"color: #008;" class=3D"styled-by-prettify">delete</span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">;</span><span style=3D"co=
lor: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color: #=
660;" class=3D"styled-by-prettify">};</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify"><br><br></span><span style=3D"color: #008;" clas=
s=3D"styled-by-prettify">template</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"style=
d-by-prettify">&lt;</span><span style=3D"color: #008;" class=3D"styled-by-p=
rettify">typename</span><span style=3D"color: #000;" class=3D"styled-by-pre=
ttify"> A</span><span style=3D"color: #660;" class=3D"styled-by-prettify">,=
</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><s=
pan style=3D"color: #008;" class=3D"styled-by-prettify">typename</span><spa=
n 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"><br></span><span style=3D"color: #=
606;" class=3D"styled-by-prettify">Combined</span><span style=3D"color: #66=
0;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #000;" cl=
ass=3D"styled-by-prettify">A</span><span style=3D"color: #660;" class=3D"st=
yled-by-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-p=
rettify"> B</span><span style=3D"color: #660;" class=3D"styled-by-prettify"=
>&gt;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </sp=
an><span style=3D"color: #008;" class=3D"styled-by-prettify">operator</span=
><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;&lt;(</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify">A </span><span st=
yle=3D"color: #008;" class=3D"styled-by-prettify">const</span><span style=
=3D"color: #660;" class=3D"styled-by-prettify">&amp;,</span><span style=3D"=
color: #000;" class=3D"styled-by-prettify"> B </span><span style=3D"color: =
#008;" class=3D"styled-by-prettify">const</span><span style=3D"color: #660;=
" class=3D"styled-by-prettify">&amp;);</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #800;" class=3D"s=
tyled-by-prettify">// no definition needed</span><span style=3D"color: #000=
;" class=3D"styled-by-prettify"><br><br></span><span style=3D"color: #008;"=
 class=3D"styled-by-prettify">template</span><span style=3D"color: #000;" c=
lass=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">&lt;</span><span style=3D"color: #008;" class=3D"styled-=
by-prettify">typename</span><span style=3D"color: #000;" class=3D"styled-by=
-prettify"> A</span><span style=3D"color: #660;" class=3D"styled-by-prettif=
y">,</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </spa=
n><span style=3D"color: #008;" class=3D"styled-by-prettify">typename</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> B</span><span st=
yle=3D"color: #660;" class=3D"styled-by-prettify">&gt;</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify"><br></span><span style=3D"color=
: #008;" class=3D"styled-by-prettify">using</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">LShift</span><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-pretti=
fy"> </span><span style=3D"color: #008;" class=3D"styled-by-prettify">declt=
ype</span><span style=3D"color: #660;" class=3D"styled-by-prettify">(</span=
><span style=3D"color: #000;" class=3D"styled-by-prettify">std</span><span =
style=3D"color: #660;" class=3D"styled-by-prettify">::</span><span style=3D=
"color: #000;" class=3D"styled-by-prettify">declval</span><span style=3D"co=
lor: #660;" class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #=
606;" class=3D"styled-by-prettify">TypeA</span><span style=3D"color: #660;"=
 class=3D"styled-by-prettify">&gt;()</span><span style=3D"color: #000;" cla=
ss=3D"styled-by-prettify"> </span><span style=3D"color: #660;" class=3D"sty=
led-by-prettify">&lt;&lt;</span><span style=3D"color: #000;" class=3D"style=
d-by-prettify"> std</span><span style=3D"color: #660;" class=3D"styled-by-p=
rettify">::</span><span style=3D"color: #000;" class=3D"styled-by-prettify"=
>declval</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&l=
t;</span><span style=3D"color: #606;" class=3D"styled-by-prettify">TypeB</s=
pan><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;());</spa=
n><span style=3D"color: #000;" class=3D"styled-by-prettify"><br><br><br></s=
pan><span style=3D"color: #800;" class=3D"styled-by-prettify">// user code<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></span>=
<span style=3D"color: #008;" class=3D"styled-by-prettify">using</span><span=
 style=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D=
"color: #606;" class=3D"styled-by-prettify">Test1</span><span style=3D"colo=
r: #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"> </span><span style=3D"color: #008;" class=3D"style=
d-by-prettify">decltype</span><span style=3D"color: #660;" class=3D"styled-=
by-prettify">(</span><span style=3D"color: #000;" class=3D"styled-by-pretti=
fy">std</span><span style=3D"color: #660;" class=3D"styled-by-prettify">::<=
/span><span style=3D"color: #000;" class=3D"styled-by-prettify">declval</sp=
an><span style=3D"color: #660;" class=3D"styled-by-prettify">&lt;</span><sp=
an style=3D"color: #606;" class=3D"styled-by-prettify">TypeA</span><span st=
yle=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=
: #660;" class=3D"styled-by-prettify">&lt;&lt;</span><span style=3D"color: =
#000;" class=3D"styled-by-prettify"> std</span><span style=3D"color: #660;"=
 class=3D"styled-by-prettify">::</span><span style=3D"color: #000;" class=
=3D"styled-by-prettify">declval</span><span style=3D"color: #660;" class=3D=
"styled-by-prettify">&lt;</span><span style=3D"color: #606;" class=3D"style=
d-by-prettify">TypeB</span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">&gt;());</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"><br></span><span style=3D"color: #008;" class=3D"styled-by-prettify=
">using</span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </=
span><span style=3D"color: #606;" class=3D"styled-by-prettify">Test2</span>=
<span style=3D"color: #000;" class=3D"styled-by-prettify"> </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"> </span><span style=3D"color: #60=
6;" class=3D"styled-by-prettify">LShift</span><span style=3D"color: #660;" =
class=3D"styled-by-prettify">&lt;</span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">TypeA</span><span style=3D"color: #660;" class=3D"s=
tyled-by-prettify">,</span><span style=3D"color: #000;" class=3D"styled-by-=
prettify"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify"=
>TypeB</span><span style=3D"color: #660;" class=3D"styled-by-prettify">&gt;=
;</span><span style=3D"color: #000;" class=3D"styled-by-prettify"><br></spa=
n></div></code></div><br>I think it would be nice if an user could write<br=
><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">using</=
span><span style=3D"color: #000;" class=3D"styled-by-prettify"> </span><spa=
n style=3D"color: #606;" class=3D"styled-by-prettify">Test3</span><span sty=
le=3D"color: #000;" class=3D"styled-by-prettify"> </span><span style=3D"col=
or: #660;" class=3D"styled-by-prettify">=3D</span><span style=3D"color: #00=
0;" class=3D"styled-by-prettify"> </span><span style=3D"color: #606;" class=
=3D"styled-by-prettify">TypeA</span><span style=3D"color: #000;" class=3D"s=
tyled-by-prettify"> </span><span style=3D"color: #660;" class=3D"styled-by-=
prettify">&lt;&lt;</span><span style=3D"color: #000;" class=3D"styled-by-pr=
ettify"> </span><span style=3D"color: #606;" class=3D"styled-by-prettify">T=
ypeB</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><br>If this is available for all operators it would make com=
pile time programming (Templates) similar to runtime programming (Normal co=
de) syntactic wise.<br></div>

<p></p>

-- <br />
&nbsp;<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 std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<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 />

<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_0_1393686245686--


.


Author: =?UTF-8?B?QW5kcsOpIEFsdGhhdXM=?= <andre@andre4all.de>
Date: Sat, 01 Mar 2014 19:01:44 +0100
Raw View
I think its too verbose for an user of a library. One could write a=20
metaprogramming library with a tuple type and then as an user of the=20
library I could write something like this:

using Tuple1 =3D Tuple<int, float>;
using Tuple2 =3D Tuple<bool, std::string>;
using ConcatenatedTuple =3D Tuple1 + Tuple2;  // ConcatenatedTuple =3D=3D=
=20
Tuple<int, float, bool, std::string>

I see this as an analog to the runtime code where I as a developer, can=20
overload an operator to give the user a nicer syntax for some operations.

With this a developer could create some form of a domain specific=20
language for use in template metaprogramming.

Am 01.03.2014 16:04, schrieb billy.oneal@gmail.com:
> What's wrong with
>
> using Test3 =3D decltype( declval<TypeA>() << declval<TypeB>() );
>
> ?
>
> Sent from a touchscreen. Please excuse the brevity and tpyos.
>
> ----- Reply message -----
> From: "Andr=C3=A9" <andre@andre4all.de>
> To: <std-proposals@isocpp.org>
> Subject: [std-proposals] Operators for types
> Date: Sat, Mar 1, 2014 4:15 AM
>
> I was thinking about a compile time only way to construct a formatting ge=
nerator like in Boost the Spirit.Karma generators. I was testing how I coul=
d combine classes the same way with a shift operator and I came up with thi=
s code.
>
> struct TypeA {
> TypeA() =3D delete;
> };
>
> struct TypeB {
> TypeB() =3D delete;
> };
>
> template <typename A, typename B>
> struct Combined {
> Combined() =3D delete;
> };
>
> template <typename A, typename B>
> Combined<A, B> operator<<(A const&, B const&); // no definition needed
>
> template <typename A, typename B>
> using LShift =3D decltype(std::declval<TypeA>() << std::declval<TypeB>())=
;
>
>
> // user code
> using Test1 =3D decltype(std::declval<TypeA>() << std::declval<TypeB>());
> using Test2 =3D LShift<TypeA, TypeB>;
>
>
>
> I think it would be nice if an user could write
>
> using Test3 =3D TypeA << TypeB;
>
>
>
> If this is available for all operators it would make compile time program=
ming (Templates) similar to runtime programming (Normal code) syntactic wis=
e.
>
>
>
>

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

.


Author: "Billy O'Neal" <billy.oneal@gmail.com>
Date: Sat, 1 Mar 2014 23:22:13 -0800
Raw View
--001a11c2a20c0d793b04f39a8ab8
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

I would argue that Jimmy Developer shouldn't be using metaprogramming
libraries. (Jimmy Developer can use libraries that make use of
metaprogramming to accomplish their jobs; but most C++ programmers
aren't writing their own TMP)

About the only use case I can think of for this is something like
boost::spirit's compile time parser generation; but auto solved the problem
there by not requiring the user to enter a type name at all.

Billy O'Neal
https://github.com/BillyONeal/ <https://bitbucket.org/BillyONeal/>
http://stackoverflow.com/users/82320/billy-oneal


On Sat, Mar 1, 2014 at 10:01 AM, Andr=C3=A9 Althaus <andre@andre4all.de> wr=
ote:

> I think its too verbose for an user of a library. One could write a
> metaprogramming library with a tuple type and then as an user of the
> library I could write something like this:
>
> using Tuple1 =3D Tuple<int, float>;
> using Tuple2 =3D Tuple<bool, std::string>;
> using ConcatenatedTuple =3D Tuple1 + Tuple2;  // ConcatenatedTuple =3D=3D
> Tuple<int, float, bool, std::string>
>
> I see this as an analog to the runtime code where I as a developer, can
> overload an operator to give the user a nicer syntax for some operations.
>
> With this a developer could create some form of a domain specific languag=
e
> for use in template metaprogramming.
>
> Am 01.03.2014 16:04, schrieb billy.oneal@gmail.com:
>
>  What's wrong with
>>
>> using Test3 =3D decltype( declval<TypeA>() << declval<TypeB>() );
>>
>> ?
>>
>> Sent from a touchscreen. Please excuse the brevity and tpyos.
>>
>> ----- Reply message -----
>> From: "Andr=C3=A9" <andre@andre4all.de>
>> To: <std-proposals@isocpp.org>
>> Subject: [std-proposals] Operators for types
>> Date: Sat, Mar 1, 2014 4:15 AM
>>
>> I was thinking about a compile time only way to construct a formatting
>> generator like in Boost the Spirit.Karma generators. I was testing how I
>> could combine classes the same way with a shift operator and I came up w=
ith
>> this code.
>>
>> struct TypeA {
>> TypeA() =3D delete;
>> };
>>
>> struct TypeB {
>> TypeB() =3D delete;
>> };
>>
>> template <typename A, typename B>
>> struct Combined {
>> Combined() =3D delete;
>> };
>>
>> template <typename A, typename B>
>> Combined<A, B> operator<<(A const&, B const&); // no definition needed
>>
>> template <typename A, typename B>
>> using LShift =3D decltype(std::declval<TypeA>() << std::declval<TypeB>()=
);
>>
>>
>> // user code
>> using Test1 =3D decltype(std::declval<TypeA>() << std::declval<TypeB>())=
;
>> using Test2 =3D LShift<TypeA, TypeB>;
>>
>>
>>
>> I think it would be nice if an user could write
>>
>> using Test3 =3D TypeA << TypeB;
>>
>>
>>
>> If this is available for all operators it would make compile time
>> programming (Templates) similar to runtime programming (Normal code)
>> syntactic wise.
>>
>>
>>
>>
>>
> --
>
> --- 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/.

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

<div dir=3D"ltr"><div>I would argue that Jimmy Developer shouldn&#39;t be u=
sing metaprogramming libraries. (Jimmy Developer can use libraries that mak=
e use of metaprogramming to accomplish their jobs; but most C++ programmers=
 aren&#39;t=C2=A0writing their own=C2=A0TMP)</div>

<div><br></div><div>About the only use case I can think of for this is some=
thing like boost::spirit&#39;s compile time parser generation; but auto sol=
ved the problem there by not requiring the user to enter a type name at all=
..</div>

</div><div class=3D"gmail_extra"><br clear=3D"all"><div><div dir=3D"ltr"><d=
iv>Billy O&#39;Neal</div><div><a href=3D"https://bitbucket.org/BillyONeal/"=
 target=3D"_blank">https://github.com/BillyONeal/</a></div><div><a href=3D"=
http://stackoverflow.com/users/82320/billy-oneal" target=3D"_blank">http://=
stackoverflow.com/users/82320/billy-oneal</a></div>

</div></div>
<br><br><div class=3D"gmail_quote">On Sat, Mar 1, 2014 at 10:01 AM, Andr=C3=
=A9 Althaus <span dir=3D"ltr">&lt;<a href=3D"mailto:andre@andre4all.de" tar=
get=3D"_blank">andre@andre4all.de</a>&gt;</span> wrote:<br><blockquote clas=
s=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;pad=
ding-left:1ex">

I think its too verbose for an user of a library. One could write a metapro=
gramming library with a tuple type and then as an user of the library I cou=
ld write something like this:<br>
<br>
using Tuple1 =3D Tuple&lt;int, float&gt;;<br>
using Tuple2 =3D Tuple&lt;bool, std::string&gt;;<br>
using ConcatenatedTuple =3D Tuple1 + Tuple2; =C2=A0// ConcatenatedTuple =3D=
=3D Tuple&lt;int, float, bool, std::string&gt;<br>
<br>
I see this as an analog to the runtime code where I as a developer, can ove=
rload an operator to give the user a nicer syntax for some operations.<br>
<br>
With this a developer could create some form of a domain specific language =
for use in template metaprogramming.<br>
<br>
Am 01.03.2014 16:04, schrieb <a href=3D"mailto:billy.oneal@gmail.com" targe=
t=3D"_blank">billy.oneal@gmail.com</a>:<div class=3D"HOEnZb"><div class=3D"=
h5"><br>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;padding=
-left:1ex;border-left-color:rgb(204,204,204);border-left-width:1px;border-l=
eft-style:solid">
What&#39;s wrong with<br>
<br>
using Test3 =3D decltype( declval&lt;TypeA&gt;() &lt;&lt; declval&lt;TypeB&=
gt;() );<br>
<br>
?<br>
<br>
Sent from a touchscreen. Please excuse the brevity and tpyos.<br>
<br>
----- Reply message -----<br>
From: &quot;Andr=C3=A9&quot; &lt;<a href=3D"mailto:andre@andre4all.de" targ=
et=3D"_blank">andre@andre4all.de</a>&gt;<br>
To: &lt;<a href=3D"mailto:std-proposals@isocpp.org" target=3D"_blank">std-p=
roposals@isocpp.org</a>&gt;<br>
Subject: [std-proposals] Operators for types<br>
Date: Sat, Mar 1, 2014 4:15 AM<br>
<br>
I was thinking about a compile time only way to construct a formatting gene=
rator like in Boost the Spirit.Karma generators. I was testing how I could =
combine classes the same way with a shift operator and I came up with this =
code.<br>


<br>
struct TypeA {<br>
TypeA() =3D delete;<br>
};<br>
<br>
struct TypeB {<br>
TypeB() =3D delete;<br>
};<br>
<br>
template &lt;typename A, typename B&gt;<br>
struct Combined {<br>
Combined() =3D delete;<br>
};<br>
<br>
template &lt;typename A, typename B&gt;<br>
Combined&lt;A, B&gt; operator&lt;&lt;(A const&amp;, B const&amp;); // no de=
finition needed<br>
<br>
template &lt;typename A, typename B&gt;<br>
using LShift =3D decltype(std::declval&lt;TypeA&gt;() &lt;&lt; std::declval=
&lt;TypeB&gt;());<br>
<br>
<br>
// user code<br>
using Test1 =3D decltype(std::declval&lt;TypeA&gt;() &lt;&lt; std::declval&=
lt;TypeB&gt;());<br>
using Test2 =3D LShift&lt;TypeA, TypeB&gt;;<br>
<br>
<br>
<br>
I think it would be nice if an user could write<br>
<br>
using Test3 =3D TypeA &lt;&lt; TypeB;<br>
<br>
<br>
<br>
If this is available for all operators it would make compile time programmi=
ng (Templates) similar to runtime programming (Normal code) syntactic wise.=
<br>
<br>
<br>
<br>
<br>
</blockquote>
<br>
-- <br>
<br>
--- You received this message because you are subscribed to the Google Grou=
ps &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" target=3D=
"_blank">std-proposals+unsubscribe@<u></u>isocpp.org</a>.<br>
To post to this group, send email to <a href=3D"mailto:std-proposals@isocpp=
..org" target=3D"_blank">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/<u></u>isocpp.=
org/group/std-<u></u>proposals/</a>.<br>
</div></div></blockquote></div><br></div>

<p></p>

-- <br />
&nbsp;<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 std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<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 />

--001a11c2a20c0d793b04f39a8ab8--

.