<?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[Variadic int Template]]></title><description><![CDATA[<p>Kann man die variadic Templates nicht auch für ints verwenden? Z.B. so</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;int head, int ... tail&gt;                                                
struct Accumulator {
    static const int result = head + Accumulator&lt;tail...&gt;::result;
};

template&lt;int head&gt;
struct Accumulator&lt;head&gt; {
    static const int result = head;
};

int
main()
{
    std::cout &lt;&lt; Accumulator&lt;1,2,3,4,5&gt;::result &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/304286/variadic-int-template</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 21:02:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304286.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 02 Jun 2012 17:59:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 17:59:08 GMT]]></title><description><![CDATA[<p>Kann man die variadic Templates nicht auch für ints verwenden? Z.B. so</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;int head, int ... tail&gt;                                                
struct Accumulator {
    static const int result = head + Accumulator&lt;tail...&gt;::result;
};

template&lt;int head&gt;
struct Accumulator&lt;head&gt; {
    static const int result = head;
};

int
main()
{
    std::cout &lt;&lt; Accumulator&lt;1,2,3,4,5&gt;::result &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2218591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218591</guid><dc:creator><![CDATA[C++11er]]></dc:creator><pubDate>Sat, 02 Jun 2012 17:59:08 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 18:00:27 GMT]]></title><description><![CDATA[<p>Also bei obigem Code heult G++ bei mir herum und spuckt folgende Meldung aus:</p>
<pre><code>test.cpp:5:57: sorry, unimplemented: cannot expand ‘tail ...’ into a fixed-length argument list
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2218592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218592</guid><dc:creator><![CDATA[C++11er]]></dc:creator><pubDate>Sat, 02 Jun 2012 18:00:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 18:17:58 GMT]]></title><description><![CDATA[<p>welche gcc version verwendest du und hast du überhaupt den c++0x (bzw c++11) modus aktiviert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218599</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Sat, 02 Jun 2012 18:17:58 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 18:21:31 GMT]]></title><description><![CDATA[<p>4.6.3 und ich übersetze mit</p>
<pre><code>g++ -pedantic -std=c++0x -W -Wall -o test test.cpp
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2218600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218600</guid><dc:creator><![CDATA[C++11er]]></dc:creator><pubDate>Sat, 02 Jun 2012 18:21:31 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 18:22:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt; int... &gt;
struct Accumulator;

template&lt;int head, int ... tail&gt;
struct Accumulator&lt; head , tail... &gt; {
    static const int result = head + Accumulator&lt;tail...&gt;::result;
};

template&lt;int head&gt;
struct Accumulator&lt;head&gt; {
    static const int result = head;
};

int
main()
{
    std::cout &lt;&lt; Accumulator&lt;1,2,3,4,5&gt;::result &lt;&lt; std::endl;
}
</code></pre>
<p>funktioniert bei mir.<br />
Das Problem ist, denke ich, dass dein template nicht mit einem parameter pack anfängt, da es als</p>
<pre><code class="language-cpp">template&lt;int head, int ... tail&gt;                                                
struct Accumulator;
</code></pre>
<p>deklariert wurde. Das parameter pack kann der gcc offensichtlich nicht in ein einzelnes Argument packen (wenn das template so deklariert wurde, bei Spezialisierung funktioniert es offensichtlich). Arbeite einfach mit dem workaround den ich gepostet habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218601</guid><dc:creator><![CDATA[GorbGorb]]></dc:creator><pubDate>Sat, 02 Jun 2012 18:22:55 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 18:26:46 GMT]]></title><description><![CDATA[<p>Danke, damit klappt es!</p>
<p>Was ist ein parameter pack bzw. ein einziges? Sprich, mir ist das Problem nicht ganz klar, das du mit dem Workaround löst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218605</guid><dc:creator><![CDATA[C++11er]]></dc:creator><pubDate>Sat, 02 Jun 2012 18:26:46 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 18:35:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt; int... parameter_pack &gt;
</code></pre>
<p>Das ist ein parameter pack. Und beim gcc ist das nicht möglich:</p>
<pre><code class="language-cpp">template&lt; int no_parameter_pack , int... &gt;
struct XY;

XY&lt; parameter_pack... &gt; x;
</code></pre>
<p>XY hat als erstes Argument kein parameter pack, man übergibt XY aber ein parameter pack. Eigentlich wäre das so möglich, indem das parameter pack aufgesplittet wird (vermutlich, wenn sich der gcc dafür entschuldigt), aber beim gcc wohl noch nicht. Das Problem scheint nur aufzutreten, wenn das template so deklariert wurde, d.h. parameter packs werden bei Spezialisierungen richtig aufgeteilt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218606</guid><dc:creator><![CDATA[GorbGorb]]></dc:creator><pubDate>Sat, 02 Jun 2012 18:35:55 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic int Template on Sat, 02 Jun 2012 20:14:12 GMT]]></title><description><![CDATA[<p>ok anscheinend ist diese syntax variante des variadic template im gcc 4.6 noch nicht implementiert. Ich kann deinen beispielcode mit clang version 3.2 (svn build) bauen.<br />
Edit: mit gcc 4.7.0 funktioniert es auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2218608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2218608</guid><dc:creator><![CDATA[firefly]]></dc:creator><pubDate>Sat, 02 Jun 2012 20:14:12 GMT</pubDate></item></channel></rss>