<?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[void als variadic-template-Parameter]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich habe ein Tupel von Objekten. Jetzt möchte ich ein anderes (eigenes) Tupel haben, in dem bestimmte Informationen aus diesen Objekten abgelegt werden.<br />
Jetzt muss allerdings nicht jedes Objekt Informationen enthalten, so dass ich gerne an dieser Stelle ein void hätte.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
struct Member{
	Member(const T&amp; t) : value(t) {}
	T value;
};

template&lt;&gt;
struct Member&lt;void&gt;{
	Member(void){}
};

template&lt;typename...T&gt;
struct Tuple : public Member&lt;T&gt;...{
	Tuple(const T&amp;... t) : Member&lt;T&gt;(t)...{}
};

void get(){}

int main(){
	Tuple&lt;int, char, double&gt; t3(2, 'c', 1.0d);
	Tuple&lt;int, char, double, void&gt; t4(2, 'c', 1.0d, get());
}
</code></pre>
<p>Also generell ohne Berücksichtigung von void würde es etwa aussehen wie oben.</p>
<p>Allerdings kriegt man Probleme, da unter anderem keine Referenz auf void bilden kann:</p>
<blockquote>
<p>test.cpp: In instantiation of 'Tuple&lt;int, char, double, void&gt;':<br />
test.cpp:24:35: instantiated from here<br />
test.cpp:14:2: error: forming reference to void<br />
test.cpp: In function 'int main()':<br />
test.cpp:24:55: error: invalid use of void expression</p>
</blockquote>
<p>Wie würdet ihr vorgehen um void in einem eigenen Tupel zu ermöglichen?</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/292172/void-als-variadic-template-parameter</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 02:57:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292172.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 04 Sep 2011 16:59:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to void als variadic-template-Parameter on Sun, 04 Sep 2011 16:59:23 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>also ich habe ein Tupel von Objekten. Jetzt möchte ich ein anderes (eigenes) Tupel haben, in dem bestimmte Informationen aus diesen Objekten abgelegt werden.<br />
Jetzt muss allerdings nicht jedes Objekt Informationen enthalten, so dass ich gerne an dieser Stelle ein void hätte.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
struct Member{
	Member(const T&amp; t) : value(t) {}
	T value;
};

template&lt;&gt;
struct Member&lt;void&gt;{
	Member(void){}
};

template&lt;typename...T&gt;
struct Tuple : public Member&lt;T&gt;...{
	Tuple(const T&amp;... t) : Member&lt;T&gt;(t)...{}
};

void get(){}

int main(){
	Tuple&lt;int, char, double&gt; t3(2, 'c', 1.0d);
	Tuple&lt;int, char, double, void&gt; t4(2, 'c', 1.0d, get());
}
</code></pre>
<p>Also generell ohne Berücksichtigung von void würde es etwa aussehen wie oben.</p>
<p>Allerdings kriegt man Probleme, da unter anderem keine Referenz auf void bilden kann:</p>
<blockquote>
<p>test.cpp: In instantiation of 'Tuple&lt;int, char, double, void&gt;':<br />
test.cpp:24:35: instantiated from here<br />
test.cpp:14:2: error: forming reference to void<br />
test.cpp: In function 'int main()':<br />
test.cpp:24:55: error: invalid use of void expression</p>
</blockquote>
<p>Wie würdet ihr vorgehen um void in einem eigenen Tupel zu ermöglichen?</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114788</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 04 Sep 2011 16:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to void als variadic-template-Parameter on Sun, 04 Sep 2011 17:13:31 GMT]]></title><description><![CDATA[<p>Für sowas eignet sich meistens Leer- oder Nullklassen/-objekte zu verwenden.</p>
<pre><code class="language-cpp">class Empty { };
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114800</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 04 Sep 2011 17:13:31 GMT</pubDate></item><item><title><![CDATA[Reply to void als variadic-template-Parameter on Sun, 04 Sep 2011 17:24:01 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Für sowas eignet sich meistens Leer- oder Nullklassen/-objekte zu verwenden.</p>
<pre><code class="language-cpp">class Empty { };
</code></pre>
<p>Grüssli</p>
</blockquote>
<p>Danke Dravere...</p>
<p>Genau das wollte ich eigentlich vermeiden <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>
<p>EDIT: Aber immerhin kann ich es intern wieder zum void machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2114804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2114804</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 04 Sep 2011 17:24:01 GMT</pubDate></item></channel></rss>