<?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 templates]]></title><description><![CDATA[<p>Finde den Fehler. Ich bin schon fast verzweifelt eben... Nachdem alle Parameter ausgepackt sind, wird f(d...) zu f(). f() ist natürlich definiert, Compiler wollte mir aber nicht glauben.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

template&lt;typename First, typename... Args&gt;
void f(First first, Args... d)
{
	cout &lt;&lt; first &lt;&lt; endl;
	f(d...);
}

void f() { }

int main()
{
	f(2,1,'c');
}
</code></pre>
<p>Das passiert mir nicht nochmal <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/topic/311887/variadic-templates</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 06:35:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311887.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Dec 2012 15:08:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variadic templates on Mon, 17 Dec 2012 15:11:11 GMT]]></title><description><![CDATA[<p>Finde den Fehler. Ich bin schon fast verzweifelt eben... Nachdem alle Parameter ausgepackt sind, wird f(d...) zu f(). f() ist natürlich definiert, Compiler wollte mir aber nicht glauben.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

template&lt;typename First, typename... Args&gt;
void f(First first, Args... d)
{
	cout &lt;&lt; first &lt;&lt; endl;
	f(d...);
}

void f() { }

int main()
{
	f(2,1,'c');
}
</code></pre>
<p>Das passiert mir nicht nochmal <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/2280914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280914</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 17 Dec 2012 15:11:11 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic templates on Mon, 17 Dec 2012 15:15:01 GMT]]></title><description><![CDATA[<p>die Namelookupregeln sind so gestrickt, dass das obere f das untere f nie aufrufen kann, wenn du es nicht vorher deklarierst. Und ADL hilft ja hier auch nicht, wenn du keine Parameter hast.</p>
<p>Probier mal das hier:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt; 
using namespace std; 

void f() { } 

template&lt;typename First, typename... Args&gt; 
void f(First first, Args... d) 
{ 
    cout &lt;&lt; first &lt;&lt; endl; 
    f(d...); 
} 

int main() 
{ 
    f(2,1,'c'); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2280918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280918</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 17 Dec 2012 15:15:01 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic templates on Mon, 17 Dec 2012 15:33:24 GMT]]></title><description><![CDATA[<p>Du kannst dein <code>f</code> übrigens auch so implementieren:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; using identity = T;

template&lt;typename... Args&gt;
void f(Args... d)
{
  identity&lt;bool[]&gt;{false, (std::cout &lt;&lt; d &lt;&lt; '\n', false)...};
}

int main()
{
    f(2,1,'c');
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2280925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280925</guid><dc:creator><![CDATA[vario]]></dc:creator><pubDate>Mon, 17 Dec 2012 15:33:24 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic templates on Mon, 17 Dec 2012 21:42:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct expression_sequence
{
    template&lt;typename... T&gt;
    expression_sequence(T&amp;&amp;...) {}
};

template&lt;typename... Args&gt;
void f(Args... d)
{
  expression_sequence{std::cout &lt;&lt; d &lt;&lt; '\n'...};
}

int main()
{
    f(2,1,'c');
}
</code></pre>
<p>ist evtl. besser lesbar (basiert auf Absatz 8.5.4/4, der erst nach n3242 eingefügt wurde) - auf die korrekte Klammerwahl ist zu achten! Wenn void-Ausdrücke dabei sind, kommt man allerdings nicht um den Komma-Operator-Trick herum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2280963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2280963</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 17 Dec 2012 21:42:07 GMT</pubDate></item><item><title><![CDATA[Reply to Variadic templates on Mon, 17 Dec 2012 21:28:20 GMT]]></title><description><![CDATA[<p>krümelkacker, mir war schon beim posten die Lösung und das Problem klar. Jedoch wollte ich es auf dem ersten Blick durch die Templates nicht sehen und habe es nur als Hinweis für anderen gepostet.</p>
<pre><code>void f(int)
{
  f(); // ja, da schreit mein brain-compiler sofort
}

void f()
{ }

void g(Args... d)
{
  g(d...); // hier macht es nicht auf dem ersten blick bling bling
}

void g()
{ }
</code></pre>
<p>Und mit den anderen zwei Anregungen, habe ich soeben meinen Horizont erweitert <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/2281021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2281021</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 17 Dec 2012 21:28:20 GMT</pubDate></item></channel></rss>