<?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 template und const static class member]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich experimentiere gerade mit variadic templates:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;int x, int ... y&gt; class multiply
{
public:
  static const int value = (sizeof...(y) == 0) ? x : (x * multiply&lt;y, ...&gt;::value);
};

int main()
{
  std::cout &lt;&lt; multiply&lt;3, 4&gt;::value &lt;&lt; std::endl;
  return 0;
}
</code></pre>
<p>Allerdings bekomme ich beim Compilieren den Fehler:</p>
<pre><code>/tmp/ccaItgJt.o: In function `main':
test.cpp:(.text+0x44): undefined reference to `multiply&lt;3, 4&gt;::value'
collect2: ld returned 1 exit status
</code></pre>
<p>Mit normalen templates bekomme ich den Fehler nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;int x, int y&gt; class multiply
{
public:
  static const int value = x * y;
};

int main()
{
  std::cout &lt;&lt; multiply&lt;3, 4&gt;::value &lt;&lt; std::endl;
  return 0;
}
</code></pre>
<p>Woran könnte das liegen?</p>
<p>Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240023/variadic-template-und-const-static-class-member</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 05:30:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240023.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Apr 2009 17:37:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to variadic template und const static class member on Thu, 30 Apr 2009 17:37:33 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich experimentiere gerade mit variadic templates:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;int x, int ... y&gt; class multiply
{
public:
  static const int value = (sizeof...(y) == 0) ? x : (x * multiply&lt;y, ...&gt;::value);
};

int main()
{
  std::cout &lt;&lt; multiply&lt;3, 4&gt;::value &lt;&lt; std::endl;
  return 0;
}
</code></pre>
<p>Allerdings bekomme ich beim Compilieren den Fehler:</p>
<pre><code>/tmp/ccaItgJt.o: In function `main':
test.cpp:(.text+0x44): undefined reference to `multiply&lt;3, 4&gt;::value'
collect2: ld returned 1 exit status
</code></pre>
<p>Mit normalen templates bekomme ich den Fehler nicht:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;int x, int y&gt; class multiply
{
public:
  static const int value = x * y;
};

int main()
{
  std::cout &lt;&lt; multiply&lt;3, 4&gt;::value &lt;&lt; std::endl;
  return 0;
}
</code></pre>
<p>Woran könnte das liegen?</p>
<p>Danke im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703774</guid><dc:creator><![CDATA[Vixen]]></dc:creator><pubDate>Thu, 30 Apr 2009 17:37:33 GMT</pubDate></item><item><title><![CDATA[Reply to variadic template und const static class member on Thu, 30 Apr 2009 17:39:54 GMT]]></title><description><![CDATA[<p>Welcher Compiler kann das denn schon?, bzw. welchen benutzt du?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703776</guid><dc:creator><![CDATA[sdfdsfdsf]]></dc:creator><pubDate>Thu, 30 Apr 2009 17:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to variadic template und const static class member on Thu, 30 Apr 2009 17:42:05 GMT]]></title><description><![CDATA[<p>Ich habe gcc 4.3.3 und kompiliere mit <code>g++ --std=c++0x test.cpp</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703777</guid><dc:creator><![CDATA[Vixen]]></dc:creator><pubDate>Thu, 30 Apr 2009 17:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to variadic template und const static class member on Fri, 01 May 2009 09:52:23 GMT]]></title><description><![CDATA[<p>Es kompiliert jetzt:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;int ... x&gt; struct multiply;

template &lt;&gt; struct multiply&lt;&gt;
{
  static const int value = 1;
};

template &lt;int x, int ... y&gt; struct multiply&lt;x, y...&gt;
{
  static const int value = x * multiply&lt;y, ...&gt;::value;
};

template &lt;int x, int ... y&gt; const int multiply&lt;x, y...&gt;::value;

int main()
{
  std::cout &lt;&lt; multiply&lt;3, 4&gt;::value &lt;&lt; std::endl;
  return 0;
}
</code></pre>
<p>Allerdings ist das Ergebnis immer Null. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703989</guid><dc:creator><![CDATA[Vixen]]></dc:creator><pubDate>Fri, 01 May 2009 09:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to variadic template und const static class member on Fri, 01 May 2009 10:04:44 GMT]]></title><description><![CDATA[<p>Ah, jetzt hab' ich's: Es muss <code>multiply&lt;y ...&gt;::value;</code> und nicht <code>multiply&lt;y, ...&gt;::value;</code> heißen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703991</guid><dc:creator><![CDATA[Vixen]]></dc:creator><pubDate>Fri, 01 May 2009 10:04:44 GMT</pubDate></item></channel></rss>