<?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[tuple als Parameter für Funktionsobjekt]]></title><description><![CDATA[<p>Hallöle,</p>
<p>Ich habe ein std::tuple von Funktionsobjekten, nennen wir sie F..., sowie ein Funktionsobjekt G. G hat als Member ein Funktionsobjekt H und das std::tuple.</p>
<p>Nun soll H mit den Rückgabewerten der Aufrufe der Funktionsobjekte F... mit den Parametern von G aufgerufen werden, oder in Code:</p>
<pre><code class="language-cpp">template &lt;typename H, typename... F&gt;
struct G
{
    template &lt;typename... Args&gt;
    auto operator () (Args&amp;&amp;... args) -&gt; ...
    {
        // rufe h mit den Ergebnissen von f(std::forward&lt;Args&gt;(args)...) für jedes F auf
    }

private:
    H h;
    std::tuple&lt;F...&gt; f;
};
</code></pre>
<p>Geht das irgendwie?</p>
<p>Grüße,<br />
PI</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302217/tuple-als-parameter-für-funktionsobjekt</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 15:16:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302217.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Apr 2012 14:48:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 14:48:55 GMT]]></title><description><![CDATA[<p>Hallöle,</p>
<p>Ich habe ein std::tuple von Funktionsobjekten, nennen wir sie F..., sowie ein Funktionsobjekt G. G hat als Member ein Funktionsobjekt H und das std::tuple.</p>
<p>Nun soll H mit den Rückgabewerten der Aufrufe der Funktionsobjekte F... mit den Parametern von G aufgerufen werden, oder in Code:</p>
<pre><code class="language-cpp">template &lt;typename H, typename... F&gt;
struct G
{
    template &lt;typename... Args&gt;
    auto operator () (Args&amp;&amp;... args) -&gt; ...
    {
        // rufe h mit den Ergebnissen von f(std::forward&lt;Args&gt;(args)...) für jedes F auf
    }

private:
    H h;
    std::tuple&lt;F...&gt; f;
};
</code></pre>
<p>Geht das irgendwie?</p>
<p>Grüße,<br />
PI</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201677</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 13 Apr 2012 14:48:55 GMT</pubDate></item><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 14:56:11 GMT]]></title><description><![CDATA[<p>Da musst du das tuple wohl händisch unrollen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201681</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 13 Apr 2012 14:56:11 GMT</pubDate></item><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 14:56:43 GMT]]></title><description><![CDATA[<p>D.h.? <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/2201682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201682</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 13 Apr 2012 14:56:43 GMT</pubDate></item><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 15:03:06 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>D.h.? <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>
</blockquote>
<p>tuple&lt;F...&gt; == tuple&lt;Head, Tail...&gt;<br />
und so kannst du rekursiv dir immer den Head aus dem Tuple schnappen und die Funktion aufrufen.</p>
<p>Die Rückgabewerte musst du halt speichern wenn du sie noch brauchst. Was erwartet H denn?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201684</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 13 Apr 2012 15:03:06 GMT</pubDate></item><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 15:05:58 GMT]]></title><description><![CDATA[<p>Mit H hab ich der Einfachheit ein bisschen gemogelt. H ist operator new für einen bestimmten Typ T, die Funktionsobjekte liefern die Argumente für new.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201686</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 13 Apr 2012 15:05:58 GMT</pubDate></item><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 15:16:33 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Mit H hab ich der Einfachheit ein bisschen gemogelt. H ist operator new für einen bestimmten Typ T, die Funktionsobjekte liefern die Argumente für new.</p>
</blockquote>
<p>Das erklärt nicht genau was du willst.<br />
Willst du h(...) für jedes Element in f einmal aufrufen oder einmal h mit einer Liste der rückgabewerte von allen Elementen in f?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201690</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 13 Apr 2012 15:16:33 GMT</pubDate></item><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 15:27:18 GMT]]></title><description><![CDATA[<p>Habs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Lösung:</p>
<pre><code class="language-cpp">template &lt;unsigned...&gt;
	struct indices {};

	template &lt;unsigned N, typename I&gt;
	struct append;

	template &lt;unsigned N, unsigned... I&gt;
	struct append&lt;N, indices&lt;I...&gt;&gt;
	{
		typedef indices&lt;I..., N&gt; type;
	};

	template &lt;unsigned N&gt;
	struct make_indices_impl
	{
		typedef typename append&lt;N, typename make_indices_impl&lt;N - 1&gt;::type&gt;::type type;
	};

	template &lt;&gt;
	struct make_indices_impl&lt;0&gt;
	{
		typedef indices&lt;0&gt; type;
	};

	template &lt;unsigned N&gt;
	struct make_indices
	{
		typedef typename make_indices_impl&lt;N - 1&gt;::type type;
	};

	template &lt;&gt;
	struct make_indices&lt;0&gt;
	{
		typedef indices&lt;&gt; type;
	};

	template &lt;typename T, typename... Expr&gt;
	struct new_expression : expression&lt;new_expression&lt;T&gt;&gt;
	{
		new_expression(Expr... expr)
			: expr{ expr... }
		{}

		template &lt;typename... Args&gt;
		T* operator () (Args&amp;&amp;... args) const
		{
			return impl(typename make_indices&lt;sizeof...(Expr)&gt;::type(), std::forward&lt;Args&gt;(args)...);
		}

	private:
		template &lt;unsigned... N, typename... Args&gt;
		T* impl(indices&lt;N...&gt;, Args&amp;&amp;... args) const
		{
			return new T(std::get&lt;N&gt;(expr)(std::forward&lt;Args&gt;(args)...)...);
		}

		std::tuple&lt;Expr...&gt; const expr;
	};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2201691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201691</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 13 Apr 2012 15:27:18 GMT</pubDate></item><item><title><![CDATA[Reply to tuple als Parameter für Funktionsobjekt on Fri, 13 Apr 2012 15:59:13 GMT]]></title><description><![CDATA[<p>Irgendwie tut mir bei soetwas der Compiler immer leid. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201696</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Fri, 13 Apr 2012 15:59:13 GMT</pubDate></item></channel></rss>