<?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[Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren?]]></title><description><![CDATA[<p>Einen wunderschönen guten Abend! <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/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<pre><code class="language-cpp">template&lt; typename T, const unsigned C, const unsigned R &gt;
void tempFunc( type&lt;T,C,R&gt; ) {}
</code></pre>
<p>Kann ich diese Templatefunktion nun für folgene Fälle spezialisieren:</p>
<p>R &gt; C<br />
R &lt; C<br />
R == C</p>
<p>Dankesehr :p</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217349/template-mit-lt-oder-gt-o-ä-spezialisieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 15:53:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217349.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Jul 2008 20:25:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Sun, 06 Jul 2008 20:25:05 GMT]]></title><description><![CDATA[<p>Einen wunderschönen guten Abend! <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/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<pre><code class="language-cpp">template&lt; typename T, const unsigned C, const unsigned R &gt;
void tempFunc( type&lt;T,C,R&gt; ) {}
</code></pre>
<p>Kann ich diese Templatefunktion nun für folgene Fälle spezialisieren:</p>
<p>R &gt; C<br />
R &lt; C<br />
R == C</p>
<p>Dankesehr :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542117</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Sun, 06 Jul 2008 20:25:05 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Sun, 06 Jul 2008 20:30:50 GMT]]></title><description><![CDATA[<p>Da würde <code>C</code> und <code>R</code> nicht als Templateparameter, sondern Parameter der Funktion übergeben, und dann innerhalb des Funktionsrumpfes eine If-Abfrage durchführen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542124</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Jul 2008 20:30:50 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Sun, 06 Jul 2008 20:32:46 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Da würde <code>C</code> und <code>R</code> nicht als Templateparameter, sondern Parameter der Funktion übergeben, und dann innerhalb des Funktionsrumpfes eine If-Abfrage durchführen.</p>
</blockquote>
<p>Ja bedauerlicherweiße bestimmt das R und C ja den template-Klassentyp &quot;type&quot;. Aber nichtsdestotrotz könnte ich natürlich in der Funktion vergleichen.... Jedoch fände ich eine spezialisierung hübscher und übersichtlicher ^^ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542129</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Sun, 06 Jul 2008 20:32:46 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Sun, 06 Jul 2008 20:39:50 GMT]]></title><description><![CDATA[<p>Und da fällt mir auf dass ich eine Kleinigkeit unterschlagen habe ... Meine Funktion nimmt noch ein 2. Argument:</p>
<pre><code class="language-cpp">template&lt; typename T, const unsigned C, const unsigned R &gt;
void tempFunc( type&lt;T,C,R&gt;, array&lt; XXX &gt;&amp; RESULT ) {} 
/*
 XXX von RESULT sei R-C wenn R&gt;C und C-R wenn R&lt;C und 13 wenn R==C
*/
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1542145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542145</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Sun, 06 Jul 2008 20:39:50 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Sun, 06 Jul 2008 20:43:57 GMT]]></title><description><![CDATA[<p>Meines Wissens sind Spezialisierungen nur für bestimmte Argumente der Templateparameter (also z.B. bestimmte Typen) möglich, aber nicht pauschal für irgendwelche Bedingungen, die die Parameter betreffen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542154</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Jul 2008 20:43:57 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Sun, 06 Jul 2008 23:50:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt; typename T, const unsigned C, const unsigned R &gt;
void tempFunc( type&lt;T,C,R&gt;, array&lt; XXX &gt;&amp; RESULT ) {}
/*
 XXX von RESULT sei R-C wenn R&gt;C und C-R wenn R&lt;C und 13 wenn R==C
*/
</code></pre>
<p>wenn es dir nur um den wert zur compile-time geht, kannst du auch folgendes machen</p>
<pre><code class="language-cpp">template&lt; typename T, const unsigned C, const unsigned R &gt;
void tempFunc( type&lt;T,C,R&gt;, array&lt; XXX &gt;&amp; RESULT )
{
   const unsigned int result = R &gt; C ? (R - C) : R &lt; C ? (C - R) : 0;
}
</code></pre>
<p>wenn du aber wirklich eine trennung je nach fall haben willst, koennte man sowas auch noch machen</p>
<pre><code class="language-cpp">template&lt;int v&gt;
struct test
{
   static void machwas(array&lt; XXX &gt;&amp; RESULT) { ... }
};

template&lt;&gt;
struct test&lt;1&gt;
{
   static void machwas(array&lt; XXX &gt;&amp; RESULT) { ... }
};

template&lt;&gt;
struct test&lt;2&gt;
{
   static void machwas(array&lt; XXX &gt;&amp; RESULT) { ... }
};

template&lt; typename T, const unsigned C, const unsigned R &gt;
void tempFunc( type&lt;T,C,R&gt;, array&lt; XXX &gt;&amp; RESULT )
{
   test&lt;(R &gt; C ? 1 : R &lt; C ? 2 : 0)&gt;::machwas(RESULT);
}
</code></pre>
<p>Meep Meep</p>
<p>Edit: klammern hinzugefuegt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542233</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sun, 06 Jul 2008 23:50:31 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Sun, 06 Jul 2008 23:59:26 GMT]]></title><description><![CDATA[<p>Naja, ob sich das lohnt, nur damit man aus Prinzip keine If-Abfragen hat... Und die ?:-Bedingungsabfrage ist ja auch nicht gerade besser...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542236</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 06 Jul 2008 23:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Mon, 07 Jul 2008 00:03:23 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Naja, ob sich das lohnt, nur damit man aus Prinzip keine If-Abfragen hat...</p>
</blockquote>
<p>ob es sich lohnt ist hier aber nicht die frage gewesen.</p>
<p>Nexus schrieb:</p>
<blockquote>
<p>Und die ?:-Bedingungsabfrage ist ja auch nicht gerade besser...</p>
</blockquote>
<p>was meinst du damit ?<br />
die brauche ich damit die spezialisierung funktioniert</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542239</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Mon, 07 Jul 2008 00:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Mon, 07 Jul 2008 10:03:14 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Naja, ob sich das lohnt, nur damit man aus Prinzip keine If-Abfragen hat...</p>
</blockquote>
<p>ob es sich lohnt ist hier aber nicht die frage gewesen.</p>
</blockquote>
<p>Trotzdem finde ich den Einwand berechtigt, wenn man aus einfachem Code komplizierten macht, nur um irgendwelche Prinzipien einzuhalten.</p>
<p>Meep Meep schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Und die ?:-Bedingungsabfrage ist ja auch nicht gerade besser...</p>
</blockquote>
<p>was meinst du damit ?<br />
die brauche ich damit die spezialisierung funktioniert</p>
</blockquote>
<p>Ich meine damit, dass man statt des ?:-Operators ebenso eine If-Abfrage innerhalb der Funktion einführen könnte.</p>
<p>Es ging mir eigentlich um Folgendes:</p>
<p>Pigeon schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Da würde <code>C</code> und <code>R</code> nicht als Templateparameter, sondern Parameter der Funktion übergeben, und dann innerhalb des Funktionsrumpfes eine If-Abfrage durchführen.</p>
</blockquote>
<p>Ja bedauerlicherweiße bestimmt das R und C ja den template-Klassentyp &quot;type&quot;. Aber nichtsdestotrotz könnte ich natürlich in der Funktion vergleichen.... Jedoch fände ich eine spezialisierung <strong>hübscher und übersichtlicher</strong> ^^ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>was ich jedoch bezweifle...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542396</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542396</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 07 Jul 2008 10:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Mon, 07 Jul 2008 10:39:58 GMT]]></title><description><![CDATA[<p>Das hier sollte helfen: <a href="http://www.boost.org/doc/libs/1_35_0/libs/utility/enable_if.html" rel="nofollow">http://www.boost.org/doc/libs/1_35_0/libs/utility/enable_if.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542424</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 07 Jul 2008 10:39:58 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Mon, 07 Jul 2008 10:49:04 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Meep Meep schrieb:</p>
<blockquote>
<p>Nexus schrieb:</p>
<blockquote>
<p>Und die ?:-Bedingungsabfrage ist ja auch nicht gerade besser...</p>
</blockquote>
<p>was meinst du damit ?<br />
die brauche ich damit die spezialisierung funktioniert</p>
</blockquote>
<p>Ich meine damit, dass man statt des ?:-Operators ebenso eine If-Abfrage innerhalb der Funktion einführen könnte.</p>
</blockquote>
<p>Nein, könnte man nicht, da dann keine Auswertung zur Compilezeit stattfindet. Und das kann durchaus ein Vorteil (bzw. notwendig) sein.</p>
<p>.filmor schrieb:</p>
<blockquote>
<p>Das hier sollte helfen: <a href="http://www.boost.org/doc/libs/1_35_0/libs/utility/enable_if.html" rel="nofollow">http://www.boost.org/doc/libs/1_35_0/libs/utility/enable_if.html</a></p>
</blockquote>
<p>Inwiefern hilft das? Es geht hier ja nicht um ein An- bzw. Ausschalten einer Funktion sondern um eine partielle Spezialisierung. Und da ist „Meep Meep“s Methode an sich schon die richtige.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542437</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542437</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 07 Jul 2008 10:49:04 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Mon, 07 Jul 2008 18:57:21 GMT]]></title><description><![CDATA[<blockquote>
<p>Nein, könnte man nicht, da dann keine Auswertung zur Compilezeit stattfindet. Und das kann durchaus ein Vorteil (bzw. notwendig) sein.</p>
</blockquote>
<p>ganz unwahrscheinlich ist es nicht, dass der Compiler sowas wegoptimiert:</p>
<pre><code class="language-cpp">if(konstanter_ausdruck)
   //tu dies
else
   //tu das
</code></pre>
<p>Erkennen tun die Compiler das aufjedenfall, wie man an warnungen wie &quot;dieser ausdruck wird immer zu wahr auswerten&quot; etc sehen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542963</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 07 Jul 2008 18:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Mon, 07 Jul 2008 19:01:29 GMT]]></title><description><![CDATA[<p>otze schrieb:</p>
<blockquote>
<blockquote>
<p>Nein, könnte man nicht, da dann keine Auswertung zur Compilezeit stattfindet. Und das kann durchaus ein Vorteil (bzw. notwendig) sein.</p>
</blockquote>
<p>ganz unwahrscheinlich ist es nicht, dass der Compiler sowas wegoptimiert:</p>
<pre><code class="language-cpp">if(konstanter_ausdruck)
   //tu dies
else
   //tu das
</code></pre>
<p>Erkennen tun die Compiler das aufjedenfall, wie man an warnungen wie &quot;dieser ausdruck wird immer zu wahr auswerten&quot; etc sehen kann.</p>
</blockquote>
<p>Klar, aber versuch damit z.B. mal die Größe eines festen C-Arrays zu bestimmen oder eben ein Template auszufüllen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1542968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542968</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 07 Jul 2008 19:01:29 GMT</pubDate></item><item><title><![CDATA[Reply to Template mit &amp;lt; oder &amp;gt; o.ä. spezialisieren? on Mon, 07 Jul 2008 19:29:09 GMT]]></title><description><![CDATA[<p>Konrad Rudolph schrieb:</p>
<blockquote>
<p>.filmor schrieb:</p>
<blockquote>
<p>Das hier sollte helfen: <a href="http://www.boost.org/doc/libs/1_35_0/libs/utility/enable_if.html" rel="nofollow">http://www.boost.org/doc/libs/1_35_0/libs/utility/enable_if.html</a></p>
</blockquote>
<p>Inwiefern hilft das? Es geht hier ja nicht um ein An- bzw. Ausschalten einer Funktion sondern um eine partielle Spezialisierung. Und da ist „Meep Meep“s Methode an sich schon die richtige.</p>
</blockquote>
<p>Ich glaub', du hast SFINAE nicht verstanden <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>
<pre><code class="language-cpp">template&lt; typename T, unsigned C, unsigned R &gt;
typename boost::enable_if_c&lt;(R &gt; C), void&gt;::type tempFunc( type&lt;T,C,R&gt;, array&lt;R - C&gt; )
{
    // R ist größer C
}

template&lt; typename T, unsigned C, unsigned R &gt;
typename boost::enable_if_c&lt;(R &lt; C), void&gt;::type tempFunc( type&lt;T,C,R&gt;, array&lt;C - R&gt; )
{
    // R ist kleiner C
}

template&lt; typename T, unsigned C, unsigned R &gt;
typename boost::enable_if_c&lt;R == C, void&gt;::type tempFunc( type&lt;T,C,R&gt;, array&lt;13&gt; )
{
    // R ist gleich C
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1542978</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1542978</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 07 Jul 2008 19:29:09 GMT</pubDate></item></channel></rss>