<?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[Funktions-Komposition]]></title><description><![CDATA[<p>Hi,</p>
<p>aus lauter spass habe ich mal eine Funktionskomposition gebastelt:</p>
<pre><code class="language-cpp">template &lt;typename T1, typename T2, typename T3&gt;
T3 compose (T2 (*function1_type)(T1), T3 (*function2_type)(T2), T1 x) {
    return (*function2_type)((*function1_type)(x));
    }
</code></pre>
<p>geht das auch noch eleganter?</p>
<pre><code class="language-cpp">template &lt;typename T1, typename T2, typename T3&gt;
T3 (*compose(T2 (*function1_type)(T1), T3 (*function2_type)(T2))) (T1) {
    ...
    }
</code></pre>
<p><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="😕"
    /><br />
return (compose(function1_type, function2_type));<br />
klappt leider nicht ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164338/funktions-komposition</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 18:19:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164338.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Nov 2006 11:36:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktions-Komposition on Tue, 07 Nov 2006 11:36:04 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>aus lauter spass habe ich mal eine Funktionskomposition gebastelt:</p>
<pre><code class="language-cpp">template &lt;typename T1, typename T2, typename T3&gt;
T3 compose (T2 (*function1_type)(T1), T3 (*function2_type)(T2), T1 x) {
    return (*function2_type)((*function1_type)(x));
    }
</code></pre>
<p>geht das auch noch eleganter?</p>
<pre><code class="language-cpp">template &lt;typename T1, typename T2, typename T3&gt;
T3 (*compose(T2 (*function1_type)(T1), T3 (*function2_type)(T2))) (T1) {
    ...
    }
</code></pre>
<p><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="😕"
    /><br />
return (compose(function1_type, function2_type));<br />
klappt leider nicht ... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170358</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170358</guid><dc:creator><![CDATA[Funktionierer]]></dc:creator><pubDate>Tue, 07 Nov 2006 11:36:04 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Komposition on Tue, 07 Nov 2006 11:42:36 GMT]]></title><description><![CDATA[<p>Was genau klappt denn nicht? Ich tippe mal, daß der Compiler Probleme hat, die richtigen Typen festzustellen.</p>
<p>PS: Weil sowas mit Funktionen tatsächlich etwas unelegant wird, gibt es in C++ sog. &quot;Funktoren&quot;. In der STL gibt es zwar keine Compose-Funktoren, aber in meinem Artikel &quot;Aufbau der STL 3&quot; habe ich ein Beispiel für einen compose() vorgestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170365</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 07 Nov 2006 11:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Komposition on Tue, 07 Nov 2006 12:40:51 GMT]]></title><description><![CDATA[<p>Hallo CStoll,</p>
<p>der compiler nimmt es, zur laufzeit bleibt das Programm bei der Zeile</p>
<p>char (*f_composed_g)(double) = compose&lt;double,int,char&gt; (g,f);</p>
<p>einfach stehen, als ob es auf eine Eingabe wartet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Gibt es einen Link zu deinem Artikel?</p>
<p>Dankeschoen <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/1170409</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170409</guid><dc:creator><![CDATA[Funktionierer]]></dc:creator><pubDate>Tue, 07 Nov 2006 12:40:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Komposition on Tue, 07 Nov 2006 12:44:40 GMT]]></title><description><![CDATA[<p>Funktionierer schrieb:</p>
<blockquote>
<p>Hallo CStoll,</p>
<p>der compiler nimmt es, zur laufzeit bleibt das Programm bei der Zeile</p>
<p>char (*f_composed_g)(double) = compose&lt;double,int,char&gt; (g,f);</p>
<p>einfach stehen, als ob es auf eine Eingabe wartet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Irgendwie blicke ich durch deine Codes auch nicht mehr durch. Kannst du das mal übersichtlicher zusammenfassen?</p>
<blockquote>
<p>Gibt es einen Link zu deinem Artikel?</p>
</blockquote>
<p>Klar: den findest du im <a href="http://c-plusplus.net/forum/viewforum-var-f-is-55.html" rel="nofollow">C++ Magazin</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170415</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170415</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 07 Nov 2006 12:44:40 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Komposition on Tue, 07 Nov 2006 12:54:33 GMT]]></title><description><![CDATA[<p>Danke fuer den Link.<br />
Mein Code ist ganz einfach:</p>
<pre><code class="language-cpp">template &lt;typename T1, typename T2, typename T3&gt;
T3 compose (T2 (*function1_type)(T1), T3 (*function2_type)(T2), T1 x) {
    return (*function2_type)((*function1_type)(x));
    } 	

template &lt;typename T1, typename T2, typename T3&gt;
T3 (*compose(T2 (*function1_type)(T1), T3 (*function2_type)(T2))) (T1) {
    return (compose(function1_type, function2_type)); 
    }
</code></pre>
<p>Naja und jetzt ein main-Programm zum Testen:</p>
<pre><code class="language-cpp">char f(int d) {
    ...
    }

int g(double d) {
    ...
    }

int main (int argc, char *argv[]) {

    cout &lt;&lt; compose&lt;double,int,char&gt;(g,f,2.2) &lt;&lt; endl;
    char (*f_composed_g)(double) = compose&lt;double,int,char&gt; (g,f);

    }
</code></pre>
<p>compose&lt;double,int,char&gt;(g,f,2.2) klappt, bei char (*f_composed_g)(double) = compose&lt;double,int,char&gt; (g,f); bleibt das Programm stehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170422</guid><dc:creator><![CDATA[Funktionierer]]></dc:creator><pubDate>Tue, 07 Nov 2006 12:54:33 GMT</pubDate></item><item><title><![CDATA[Reply to Funktions-Komposition on Tue, 07 Nov 2006 12:59:37 GMT]]></title><description><![CDATA[<p>Ja, da hast du auch eine nette Endlos-Rekursion eingebaut:</p>
<pre><code class="language-cpp">//mal etwas vereinfacht:
T compose(T1 x1,T2 x2)
{
  return compose(x1,x2);
}
</code></pre>
<p>^^siehst du etwas? Die Funktion ruft sich selber auf - und da sie keine Abbruchbedingung hat, macht sie das so lange, bis dir der Stack um die Ohren fliegt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1170427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1170427</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 07 Nov 2006 12:59:37 GMT</pubDate></item></channel></rss>