<?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[dumme idee mit templates...]]></title><description><![CDATA[<p>ja wie der name so sagt.. sitz ich grad da, plötzlich fällt mir was total freakiges ein... rein vom syntax her ist es möglich eine classe mit templates zu basteln die mit einem funktionsaufruf eine template parameter zähl variable auf einen bestimmten wert setzt und dann ne funktion aufruft... lässt sich bei mir mit dev-cpp allerdings nur mit einer obergrenze compilieren. Ich weiß ned wie genau er das jetzt übersetzt, allerdings geh ich mal davon aus das es nicht sehr sinnvoll ist... war auch nicht so gedacht <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="😃"
    /><br />
Hier der code:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

template&lt;long i&gt; class super_rek
{
public:
  void add(const int number)
  {
    super_rek&lt;i+1&gt;().check(number+i);
  }

  void check(const int number)
  {
    if(i+1&lt;number)
      super_rek&lt;i+1&gt;().check(number);
    else
      super_rek&lt;i+1&gt;().loop();
  }

  void loop(void)
  {
    cout&lt;&lt;i&lt;&lt;&quot; &quot;;
    super_rek&lt;i-1&gt;().loop();
  }
};

template&lt;&gt; void super_rek&lt;400&gt;::check(const int number)
{
  cout&lt;&lt;&quot;abort!\n&quot;;
}

template&lt;&gt; void super_rek&lt;0&gt;::loop(void)
{
  cout&lt;&lt;&quot;0\n&quot;;
}

int main(int argc, char *argv[])
{
  int num;
  cin&gt;&gt;num;
  super_rek&lt;30&gt;().add(num);
  system(&quot;PAUSE&quot;);
  return EXIT_SUCCESS;
}
</code></pre>
<p>das hat jetzt eigentlich ned wirklich einen sinn... aber ich wollt euch das nicht vorenthalten <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="😃"
    /><br />
jaja ich weiß, die meisten kennen sowas sicher schon..</p>
<p>mfg Manuelh87</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/133690/dumme-idee-mit-templates</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 00:53:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/133690.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Jan 2006 21:52:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dumme idee mit templates... on Thu, 19 Jan 2006 21:52:23 GMT]]></title><description><![CDATA[<p>ja wie der name so sagt.. sitz ich grad da, plötzlich fällt mir was total freakiges ein... rein vom syntax her ist es möglich eine classe mit templates zu basteln die mit einem funktionsaufruf eine template parameter zähl variable auf einen bestimmten wert setzt und dann ne funktion aufruft... lässt sich bei mir mit dev-cpp allerdings nur mit einer obergrenze compilieren. Ich weiß ned wie genau er das jetzt übersetzt, allerdings geh ich mal davon aus das es nicht sehr sinnvoll ist... war auch nicht so gedacht <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="😃"
    /><br />
Hier der code:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;

using namespace std;

template&lt;long i&gt; class super_rek
{
public:
  void add(const int number)
  {
    super_rek&lt;i+1&gt;().check(number+i);
  }

  void check(const int number)
  {
    if(i+1&lt;number)
      super_rek&lt;i+1&gt;().check(number);
    else
      super_rek&lt;i+1&gt;().loop();
  }

  void loop(void)
  {
    cout&lt;&lt;i&lt;&lt;&quot; &quot;;
    super_rek&lt;i-1&gt;().loop();
  }
};

template&lt;&gt; void super_rek&lt;400&gt;::check(const int number)
{
  cout&lt;&lt;&quot;abort!\n&quot;;
}

template&lt;&gt; void super_rek&lt;0&gt;::loop(void)
{
  cout&lt;&lt;&quot;0\n&quot;;
}

int main(int argc, char *argv[])
{
  int num;
  cin&gt;&gt;num;
  super_rek&lt;30&gt;().add(num);
  system(&quot;PAUSE&quot;);
  return EXIT_SUCCESS;
}
</code></pre>
<p>das hat jetzt eigentlich ned wirklich einen sinn... aber ich wollt euch das nicht vorenthalten <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="😃"
    /><br />
jaja ich weiß, die meisten kennen sowas sicher schon..</p>
<p>mfg Manuelh87</p>
]]></description><link>https://www.c-plusplus.net/forum/post/970926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/970926</guid><dc:creator><![CDATA[Manuelh87]]></dc:creator><pubDate>Thu, 19 Jan 2006 21:52:23 GMT</pubDate></item><item><title><![CDATA[Reply to dumme idee mit templates... on Thu, 19 Jan 2006 22:00:44 GMT]]></title><description><![CDATA[<p>Super Beitrag zum Thema &quot;Reducing Algorithms to O(1) with Templates&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/970934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/970934</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Thu, 19 Jan 2006 22:00:44 GMT</pubDate></item><item><title><![CDATA[Reply to dumme idee mit templates... on Thu, 19 Jan 2006 22:33:06 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Super Beitrag zum Thema &quot;Reducing Algorithms to O(1) with Templates&quot;</p>
</blockquote>
<p><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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>na vielleicht post ich auch mal was sinnvolles, mal sehn...</p>
<p>interessieren würd mich, wie er den rekursiven aufruf von loop() übersetzt hat...</p>
<p>hab aber auch was sinnvolles... naja, mehr oder weniger. matrix + vector template-classen wo alle for loop durch rekursion, also mit templates, umgesetzt sind! Habs schon getestet, also zumindest ein eindimensionaler loop wird schneller als for. aber glaub auch die 2-dimensionalen waren schneller als eine schleife.</p>
<p>Hab auch beim kopieren von den vektoren und der matrix diese technik benutz... muss aber noch testen ob ein memcopy nicht viel schneller wäre oder nicht. Das muss glaub ich getestet werden. Bei der vetor klasse glaub ich ziemlich sicher, dass die rekurisv-template methode die besseren ergebnisse erzielt (sind ja nur 3 zuweisungen...)</p>
<p>-&gt; also keine angst... ich missbrauche die templates nicht nur um beim compiler an die grenzen zu stoßen.</p>
<p>mfg Manuel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/970965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/970965</guid><dc:creator><![CDATA[Manuelh87]]></dc:creator><pubDate>Thu, 19 Jan 2006 22:33:06 GMT</pubDate></item><item><title><![CDATA[Reply to dumme idee mit templates... on Fri, 20 Jan 2006 02:19:13 GMT]]></title><description><![CDATA[<p>Dem Compiler ist nicht klar wie gross nummer werden kann.<br />
Der sieht nur, dass wenn er bestimmte Pfade geht eine Instanz von blah&lt;i+1&gt; oder blah&lt;i-1&gt; anlegen muss und so rennt er los und instanziert.<br />
Dabei trifft er wieder auf neu anzulegende Instanzen...<br />
.loop...lo0p...l0op.<br />
Wenn du keine Abbruchbedingung setzt ist halt schnell die Rekursionstiefe erreicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/970993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/970993</guid><dc:creator><![CDATA[b7f7]]></dc:creator><pubDate>Fri, 20 Jan 2006 02:19:13 GMT</pubDate></item></channel></rss>