<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Was kosten Templates?]]></title><description><![CDATA[<p>Hi Leute! Was ich mich grad frage ist, ob Templates eigentlich was kosten? Ich mein, arbeiten diese intern mit Zeigern oder ähnlichem, sodass diese langsamer laufen als eine nicht-Template Klasse?</p>
<p>Falls nicht, würde ich drüber nachdenken einige Sachen mit Templates nach zu rüsten.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268613/was-kosten-templates</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 14:51:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268613.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 11 Jun 2010 16:51:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Was kosten Templates? on Fri, 11 Jun 2010 16:51:01 GMT]]></title><description><![CDATA[<p>Hi Leute! Was ich mich grad frage ist, ob Templates eigentlich was kosten? Ich mein, arbeiten diese intern mit Zeigern oder ähnlichem, sodass diese langsamer laufen als eine nicht-Template Klasse?</p>
<p>Falls nicht, würde ich drüber nachdenken einige Sachen mit Templates nach zu rüsten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910848</guid><dc:creator><![CDATA[Code-Walker]]></dc:creator><pubDate>Fri, 11 Jun 2010 16:51:01 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Fri, 11 Jun 2010 16:52:59 GMT]]></title><description><![CDATA[<p>Templates werden zur Kompilezeit ausgewertet. Zur Laufzeit hast du dann ganz normale Klassen und Funktionen.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910850</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910850</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 11 Jun 2010 16:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Fri, 11 Jun 2010 18:46:51 GMT]]></title><description><![CDATA[<p>Um es der Verständlichkeit wegen noch an einem Beispiel zu erläutern:<br />
Aus</p>
<pre><code class="language-cpp">template&lt;class T&gt;
void ausgabe(T var)
{
	std::cout &lt;&lt; var;
}

int main()
{
	ausgabe(0);
	ausgabe(&quot;Hallo&quot;);
}
</code></pre>
<p>macht der Compiler vom Prinzip her folgendes:</p>
<pre><code class="language-cpp">void ausgabe_int(int var)
{
	std::cout &lt;&lt; var;
}

void ausgabe_constcharptr(const char *var)
{
	std::cout &lt;&lt; var;
}

int main()
{
	ausgabe_int(0);
	ausgabe_constcharptr(&quot;Hallo&quot;);
}
</code></pre>
<p>Template heißt übersetzt Schablone und genau das ist es auch. Eine Schablone für Funktionen oder Klassen, aus der der Compiler selbstständig konkrete Funktionen und Klassen generieren kann. Zur Laufzeit gibt es deshalb die Templates gar nicht mehr, sondern nur noch die generierten Funktionen und Klassen (wobei die ja zur Laufzeit auch nicht mehr existieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910859</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Fri, 11 Jun 2010 18:46:51 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Fri, 11 Jun 2010 18:27:14 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19192">@Code-Walker</a>:<br />
Templates kannst du was das angeht als eine Art &quot;Super-Makros&quot; verstehen.</p>
<p>Es werden im Endeffekt ganz normale Klassen oder Funktionen erstellt, die ganz genau so funktionieren, als ob man sie mit Hand geschrieben hätte.</p>
<p>Was allerdings zu schlechterer Performance führen kann, ist, wenn man zu viel Code über Templates erzeugt. Dadurch wird das Programm grösser, und die Chancen dass die viel genutzten Bereiche nicht mehr in den CPU Cache passen steigen. Hat allerdings nur indirekt mit Templates zu tun. Den Effekt hätte man genau so, wenn man die gleiche Menge Code mit Hand schreiben müsste.</p>
<p>Stichwort: Template Bloat</p>
<p>Und natürlich muss man, wenn man alles schön generisch halten möchte, manchmal einige Dinge komplizierter schreiben, als wenn man nur mit einem exakt definierten Typ zu tun hat. Viel davon kann der Compiler so optimieren, dass der komplizierter aussehende generische Code im Endeffekt gleich schnell läuft wie die einfachere nicht-generische Variante. Einiges aber auch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910910</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 11 Jun 2010 18:27:14 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sat, 12 Jun 2010 14:54:23 GMT]]></title><description><![CDATA[<p>man kann allerdings auch viel optimieren weil man gewisse sachen dazu bringen kann schon zur compilezeit ausgerechent zu werden</p>
<p>dazu steht was bei wikipedia unter dem punkt metaprogrammierung oder ähnlichem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911269</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 12 Jun 2010 14:54:23 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sat, 12 Jun 2010 16:13:42 GMT]]></title><description><![CDATA[<p>Templates werden immer direkt zur Compiletime ausgewertet. Daher rührt auch nicht der Overhead. Wurde aber auch schon geschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911312</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sat, 12 Jun 2010 16:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sat, 12 Jun 2010 16:19:03 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>man kann allerdings auch viel optimieren weil man gewisse sachen dazu bringen kann schon zur compilezeit ausgerechent zu werden</p>
<p>dazu steht was bei wikipedia unter dem punkt metaprogrammierung oder ähnlichem</p>
</blockquote>
<p>Ich würde da so gerne mal ein praxistaugliches Beispiel zu sehen. Alles was ich dazu kenne sind akademische Szenarien oder gelangweilte Programmierer die das zum Spaß machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911316</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 12 Jun 2010 16:19:03 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sat, 12 Jun 2010 16:21:48 GMT]]></title><description><![CDATA[<p>mh es gab da mal was zum error zur compile zeit ausgeben oder so</p>
<p>ich schreib morgen mal das beispiel rein<br />
hab nur jetzt keine zeit mehr...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911322</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 12 Jun 2010 16:21:48 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sat, 12 Jun 2010 16:34:12 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>mh es gab da mal was zum error zur compile zeit ausgeben oder so</p>
<p>ich schreib morgen mal das beispiel rein<br />
hab nur jetzt keine zeit mehr...</p>
</blockquote>
<p>Ja, oswas kenne ich. Ich meine aber wo man tatsächlich Sachen zur Compilezeit vorausberechnet und das tatsächlich praktisch relevant ist. Zum Beispiel schreibt niemand eine TMP-Fakultät um dann fakultaet&lt;6&gt; anstatt 720 schreiben zu können. Und selbst wenn man eine Fakultätsfunktion schreibt und fakultaet(6) schreibt, würde das jeder Compiler auch ohne TMP zu 720 optimieren.</p>
<p>Ich frage mich halt, ob es Beispiele gibt, wo ein Programm tatsächlich <em>schneller</em> würde durch TMP.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911331</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 12 Jun 2010 16:34:12 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sat, 12 Jun 2010 17:17:52 GMT]]></title><description><![CDATA[<p>Ich denke, Berechnungen über Template-Metaprogrammierung werden – falls sie überhaupt zum Einsatz kommen – eher ausgeführt, um einen Wert schon zur Compilezeit zu haben. Gewisse C++-Sprachmittel benötigen konstante Ausdrücke. Indirekt kann vielleicht dadurch eine Optimierung zustandekommen (z.B. indem man statische Arrays statt dynamischen vewendet, oder abhängig von einem Resultat einen anderen Ablaufpfad wählt).</p>
<p>Den anderen Fall, wo Compilezeit-Berechnungen direkt benötigt werden, habe ich bisher kaum angetroffen. Man ist auch etwas eingeschränkt, weil z.B. keine Fliesskommazahlen verwendet werden können.</p>
<p>Viel häufiger sieht man die Template-Metaprogrammierung aber im Zusammenhang mit statischem Dispatchen von Typen (Traits, Static Assertions, Policies, ...).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911354</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sat, 12 Jun 2010 17:17:52 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sat, 12 Jun 2010 17:24:42 GMT]]></title><description><![CDATA[<p>-.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911359</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sat, 12 Jun 2010 17:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 07:38:35 GMT]]></title><description><![CDATA[<p>Templates sind gerade für 1,50 Euro im Angebot...</p>
<p>und 4 für 5 Euro...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911539</guid><dc:creator><![CDATA[Angebot]]></dc:creator><pubDate>Sun, 13 Jun 2010 07:38:35 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 08:57:50 GMT]]></title><description><![CDATA[<p>hier ist mein beispiel<br />
ist aus der 6. auflage von &quot;C++ - einführung und professionelle programmierung&quot; von ulrich breymann (S. 260)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;int p, int i&gt;
struct istPrimzahl {
    enum {prim=(p%i) &amp;&amp; istPrimzahl&lt;(i&gt;2?p:0), i-1&gt;::prim};
};

template&lt;int i&gt;
struct druckePrimzahlenBis {
    druckePrimzahlenBis&lt;i-1&gt; a;
    enum { prime = istPrimzahl&lt;i, i-1&gt;::prim };

    druckePrimzahlenBis() {
        if ( prime )
            std::cout &lt;&lt; i &lt;&lt; std::endl;
    }
};

struct istPrimzahl&lt;0, 0&gt; { enum {prim=1};};
struct istPrimzahl&lt;0, 1&gt; { enum {prim=1};};
struct druckePrimzahlenBis&lt;2&gt; { enum{prim=1}; };

int main() {
    druckePrimzahlenBis&lt; __17__ &gt; a;
    return 0;
}
</code></pre>
<p>Dieses Programm wurde 1994 nach einer Idee von Erwin Unruh geschrieben, der ein programmm konstruierte, das beid er Übersetzung Primzahlen in den Fehlermeldungen des Compilers erzeugte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911564</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 13 Jun 2010 08:57:50 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 09:47:20 GMT]]></title><description><![CDATA[<p>Abgesehen, das der Code fehler hat, kommt man auch nicht weit als über IsPrim(500) zu berechnen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 

template&lt;int p, int i&gt; 
struct istPrimzahl { 
    enum {prim=(p%i) &amp;&amp; istPrimzahl&lt;(i&gt;2?p:0), i-1&gt;::prim}; 
}; 

template&lt;int i&gt; 
struct druckePrimzahlenBis { 
    druckePrimzahlenBis&lt;i-1&gt; a; 
    enum { prime = istPrimzahl&lt;i, i-1&gt;::prim }; 

    druckePrimzahlenBis() { 
        if ( prime ) 
            std::cout &lt;&lt; i &lt;&lt; std::endl; 
    } 
}; 

template&lt;&gt; 
struct istPrimzahl&lt;0, 0&gt; { enum {prim=1};};

template&lt;&gt; 
struct istPrimzahl&lt;0, 1&gt; { enum {prim=1};}; 

template&lt;&gt; 
struct druckePrimzahlenBis&lt;2&gt; { enum{prim=1}; }; 

int main() { 
    druckePrimzahlenBis&lt; 501 &gt; a; 
    return 0; 
}
</code></pre>
<blockquote>
<p>Error 1 error C1202: recursive type or function dependency context too complex e:\workspace\cxx01\cxx01\main.cpp 5 1 cxx01</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1911583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911583</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 13 Jun 2010 09:47:20 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 09:47:56 GMT]]></title><description><![CDATA[<p>Danke. Sowas meinte ich. Eine nichttriviale Aufgabe die während der Compilezeit gelöst werden kann. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911584</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 13 Jun 2010 09:47:56 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 10:33:35 GMT]]></title><description><![CDATA[<p>ich weis dass der code nicht klappt<br />
hat er bei mir auch nicht</p>
<p>aber ich hab ihn wortwörtlich abgeschrieben aus dem buch vorhin, genauso wie die 3 zeilen danach</p>
<p>aber das prinzip sollte klar sein dabei denke ich<br />
und die cracks hier können den auch so ohne probleme von syntaktischen rerrors befreien</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911610</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 13 Jun 2010 10:33:35 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 10:55:08 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Danke. Sowas meinte ich. Eine nichttriviale Aufgabe die während der Compilezeit gelöst werden kann. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>TMP ist turingvollständig, also kann man alle Algorithmen damit zur Compilezeit lösen. Aber sämtliche Beispiele dafür sind prinzipbedingt akademischer Humbug, denn ein zur Compilezeit feststehendes Ergebnis kann ich genauso gut hardcodieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911614</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sun, 13 Jun 2010 10:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 10:57:06 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>Aber sämtliche Beispiele dafür sind prinzipbedingt akademischer Humbug, denn ein zur Compilezeit feststehendes Ergebnis kann ich genauso gut hardcodieren.</p>
</blockquote>
<p>Es sei denn das Ergebnis ist nicht eine Zahl sondern ein Typ.<br />
Dann wirds naemlich interessant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911616</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 13 Jun 2010 10:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 11:04:48 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>ipsec schrieb:</p>
<blockquote>
<p>Aber sämtliche Beispiele dafür sind prinzipbedingt akademischer Humbug, denn ein zur Compilezeit feststehendes Ergebnis kann ich genauso gut hardcodieren.</p>
</blockquote>
<p>Es sei denn das Ergebnis ist nicht eine Zahl sondern ein Typ.<br />
Dann wirds naemlich interessant.</p>
</blockquote>
<p>Ich denke, dann kommt der Horror <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
<pre><code class="language-cpp">#define TYPELIST_1(T1) typelist&lt;T1, null_typelist&gt;
#define TYPELIST_2(T1, T2) typelist&lt;T1, TYPELIST_1(T2) &gt;
#define TYPELIST_3(T1, T2, T3) typelist&lt;T1, TYPELIST_2(T2, T3) &gt;
#define TYPELIST_4(T1, T2, T3, T4) typelist&lt;T1, TYPELIST_3(T2, T3, T4) &gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1911619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911619</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 13 Jun 2010 11:04:48 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 11:06:28 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Es sei denn das Ergebnis ist nicht eine Zahl sondern ein Typ.<br />
Dann wirds naemlich interessant.</p>
</blockquote>
<p>ahja, das lässt sich nicht hartcodieren, oder was</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911620</guid><dc:creator><![CDATA[_x_]]></dc:creator><pubDate>Sun, 13 Jun 2010 11:06:28 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 11:09:01 GMT]]></title><description><![CDATA[<p><em>x</em> schrieb:</p>
<blockquote>
<p>ahja, das lässt sich nicht hartcodieren, oder was</p>
</blockquote>
<p>Tu bitte mal</p>
<pre><code class="language-cpp">template &lt;typename ForwardIterator&gt;
void Algorithm(ForwardIterator itr)
{
    typedef typename std::iterator_traits&lt;ForwardIterator&gt;::value_type ValueType;
    ... // Mache was mit ValueType
}
</code></pre>
<p>hier <code>ValueType</code> ohne Metaprogrammierung hardcodieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911623</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 13 Jun 2010 11:09:01 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 11:35:44 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>ipsec schrieb:</p>
<blockquote>
<p>Aber sämtliche Beispiele dafür sind prinzipbedingt akademischer Humbug, denn ein zur Compilezeit feststehendes Ergebnis kann ich genauso gut hardcodieren.</p>
</blockquote>
<p>Es sei denn das Ergebnis ist nicht eine Zahl sondern ein Typ.<br />
Dann wirds naemlich interessant.</p>
</blockquote>
<p>Ja natürlich, da habe ich mich falsch ausgedrückt. Ich meinte Beispiele wie:</p>
<pre><code class="language-cpp">fak&lt;10&gt;::value;
primzahlen_bis&lt;100&gt;::value;
nullstelle&lt;add&lt;mul&lt;2, mul&lt;x, x&gt; &gt;, -1&gt; &gt;::next::value;    // 2. Nullstelle von f(x)=2x^2-1
kuerzester_weg&lt;'A', 'C', graph&lt;knoten&lt;'A'&gt;, knoten&lt;'B'&gt;, knoten&lt;'C'&gt;, kante&lt;'A', 'B', 1&gt;, kante&lt;'B', 'C', 2&gt;, kante&lt;'A', 'C', 100&gt; &gt; &gt;::begin::next;   // 2. Knoten des kürzesten Weges
                                                                                                                                                       // von A nach C in dem Graphen
</code></pre>
<p>Diese Ergebnisse kann man wesentlich lesbarer auch hardcodieren.<br />
Das in Verbindung mit Typen TMP gewaltig Entwicklungszeit oder Laufzeit spart, ist natürlich klar. (Man denke an eine Implementierung von vector ohne Templates (und am besten noch ohne Makros, denn die sind böse)).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911639</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Sun, 13 Jun 2010 11:35:44 GMT</pubDate></item><item><title><![CDATA[Reply to Was kosten Templates? on Sun, 13 Jun 2010 12:01:28 GMT]]></title><description><![CDATA[<p>ipsec schrieb:</p>
<blockquote>
<p>und am besten noch ohne Makros, denn die sind böse</p>
</blockquote>
<p>Interessant ist doch gerade, dass Makros in Kombination mit Template-Metaprogrammierung enormes Potential haben.</p>
<p>Ob nun</p>
<pre><code class="language-cpp">TYPELIST_4(int, double, bool, signed char)
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">STATIC_ASSERT(Condition)
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">MAP_TYPES(KeyA, ValueA)
MAP_TYPES(KeyB, ValueB)
MAP_TYPES(KeyC, ValueC)
</code></pre>
<p>Man hat mit Makros eine effiziente Waffe gegen den unschönen und sperrigen Template-Code. Man kann Metafunktionen wie Funktionen aussehen lassen. Makros ermöglichen sogar mächtige Codegeneratoren wie <em>Boost.Preprocessor</em>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1911646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1911646</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 13 Jun 2010 12:01:28 GMT</pubDate></item></channel></rss>