<?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&amp;lt;typename,class&amp;gt;]]></title><description><![CDATA[<p>Hi. Ich bin grad ueber was gestolpert was ich nciht richtig versthe oder besser gesagt keinen blssen schimmer hab.</p>
<p>Wo ist der Unterschied zwischen</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">template&lt;class T&gt;
</code></pre>
<p>und wieso schreibt man z.B.</p>
<pre><code class="language-cpp">template&lt;const int a, typename T&gt;
</code></pre>
<p>oder ähnlich.<br />
Ich wusste auch mit diesem stueck code nichts anzufangen, welches mich letzendlich zu den oberen Fragen getrieben hat:</p>
<pre><code class="language-cpp">template &lt;class _Arg1, class _Arg2, class _Result&gt;
     struct binary_function
    {
      typedef _Arg1 first_argument_type;                                           
      typedef _Arg2 second_argument_type;  
      typedef _Result result_type;        
   };
</code></pre>
<p>Wenn ich hiervon nun eine klasse ableite, den () Operator ueberlade und das ganze in meinetwegen transform reinschmeisse, weiss transform wie es das Funktionsobjekt( Ist das richtig) benutzen kann. Wieso? <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>
<p>MFG chewbo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164145/template-lt-typename-class-gt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 16:04:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164145.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Nov 2006 16:19:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template&amp;lt;typename,class&amp;gt; on Sun, 05 Nov 2006 16:19:50 GMT]]></title><description><![CDATA[<p>Hi. Ich bin grad ueber was gestolpert was ich nciht richtig versthe oder besser gesagt keinen blssen schimmer hab.</p>
<p>Wo ist der Unterschied zwischen</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">template&lt;class T&gt;
</code></pre>
<p>und wieso schreibt man z.B.</p>
<pre><code class="language-cpp">template&lt;const int a, typename T&gt;
</code></pre>
<p>oder ähnlich.<br />
Ich wusste auch mit diesem stueck code nichts anzufangen, welches mich letzendlich zu den oberen Fragen getrieben hat:</p>
<pre><code class="language-cpp">template &lt;class _Arg1, class _Arg2, class _Result&gt;
     struct binary_function
    {
      typedef _Arg1 first_argument_type;                                           
      typedef _Arg2 second_argument_type;  
      typedef _Result result_type;        
   };
</code></pre>
<p>Wenn ich hiervon nun eine klasse ableite, den () Operator ueberlade und das ganze in meinetwegen transform reinschmeisse, weiss transform wie es das Funktionsobjekt( Ist das richtig) benutzen kann. Wieso? <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>
<p>MFG chewbo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168979</guid><dc:creator><![CDATA[chewbo]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:19:50 GMT</pubDate></item><item><title><![CDATA[Reply to template&amp;lt;typename,class&amp;gt; on Sun, 05 Nov 2006 16:34:45 GMT]]></title><description><![CDATA[<p>zwischen class und typename gibt es keinen Unterschied, die sind beide gleichwertig. class ist für schreibfaule. <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>
<p>Aber manche benutze class um zu sagen: &quot;hier bitte eher einen komlexen Typ einsetzen&quot; und bei typename &quot;hier bitte einen primitiven Typ (int, char...) einsetzen&quot;.</p>
<p>Aber im Prinzip ist es dem Compiler schnuppe.</p>
<p>template&lt;const int a, typename T&gt; ist glaub ich eine partielle Spezialisierung. Also der erste Parameter ist schon mal vorgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168984</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:34:45 GMT</pubDate></item><item><title><![CDATA[Reply to template&amp;lt;typename,class&amp;gt; on Sun, 05 Nov 2006 16:40:24 GMT]]></title><description><![CDATA[<p>chewbo schrieb:</p>
<blockquote>
<p>Hi. Ich bin grad ueber was gestolpert was ich nciht richtig versthe oder besser gesagt keinen blssen schimmer hab.</p>
<p>Wo ist der Unterschied zwischen</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
</code></pre>
<p>und</p>
<pre><code class="language-cpp">template&lt;class T&gt;
</code></pre>
</blockquote>
<p>nun, das ist einfach.<br />
oben steht typename und unten steht class. das ist der unterschied.<br />
manche leute ziehen manchmal typename vor, um zusätzlich auszudrücken, dass es ihnen um einen x-beliebigen typ (und nicht nur klassen) geht. lesbarkeit. ab und zu zumindest. in anderen kontexten hat typename allerdings auch andere bedeutungen.</p>
<blockquote>
<p>und wieso schreibt man z.B.</p>
<pre><code class="language-cpp">template&lt;const int a, typename T&gt;
</code></pre>
<p>oder ähnlich.</p>
</blockquote>
<p>wieso man das schreibt? hängt wahrscheinlich davon ab, was man haben möchte. wenn du ein solches template haben willst, schreibst du eben das. mehr info (was unklar ist) bringt mehr awort. was du zb damit tun kannst, ist, während der compilezeit dir schon alle möglichen sachen ausrechnen (google: template-metaprogramming)</p>
<blockquote>
<p>Ich wusste auch mit diesem stueck code nichts anzufangen, welches mich letzendlich zu den oberen Fragen getrieben hat:</p>
<pre><code class="language-cpp">template &lt;class _Arg1, class _Arg2, class _Result&gt;
     struct binary_function
    {
      typedef _Arg1 first_argument_type;                                           
      typedef _Arg2 second_argument_type;  
      typedef _Result result_type;        
   };
</code></pre>
<p>Wenn ich hiervon nun eine klasse ableite, den () Operator ueberlade und das ganze in meinetwegen transform reinschmeisse, weiss transform wie es das Funktionsobjekt( Ist das richtig) benutzen kann. Wieso? <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 />
MFG chewbo</p>
</blockquote>
<p>naja, was du mit diesem template in einer funktion wie transform kannst, ist, die typen rausfinden.<br />
also zb.</p>
<pre><code class="language-cpp">template &lt;class A&gt;
struct add : binary_function&lt;A,A,A&gt;
{
   A operator () (const A&amp; a, const A&amp; b)
   {
      return a+b;
   }
};

template &lt;class Iter, class T&gt;
typename T::result_type foobar (Iter a, Iter const&amp; b, T fun)
{
   typename T::result_type tmp;
   while (a != b) tmp = fun(*a++,tmp);
   return tmp;
}

int main ()
{
   int a[] = { 2, 3, 5, 8 };
   cout &lt;&lt;  foobar (a, a+4, add&lt;int&gt;()) &lt;&lt; endl;
}
</code></pre>
<p>damit foobar also weiß, welchen typ es zurückgeben muss. transform und co. arbeiten natürlich anders, das war jetzt nur ein ganz einfaches beispiel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168990</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to template&amp;lt;typename,class&amp;gt; on Sun, 05 Nov 2006 16:49:52 GMT]]></title><description><![CDATA[<p>bei &quot;const int a&quot; als Template Parameter handelt es sich um ein Nontype-Template-Parameter. Bei <a href="https://www.google.de/search?&amp;q=Non%20type-Template-Parameter" rel="nofollow">Google: Non type-Template-Parameter</a> findet man einige Informationen dazu.</p>
<blockquote>
<p>Wenn ich hiervon nun eine klasse ableite, den () Operator ueberlade und das ganze in meinetwegen transform reinschmeisse, weiss transform wie es das Funktionsobjekt( Ist das richtig) benutzen kann. Wieso?</p>
</blockquote>
<p>Zeiger auf Funktionen rufen die Methode auf indem man sie dereferenziert und wie beim normalen Funktionsaufruf die Parameter übergibt, genauso verhält es sich mit Funktoren. Dafür muss aber ein entsprechender operator() überladen sein. Dieser wird auch für implizite Typumandlungen verwendet.</p>
<p>Greetz</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168996</guid><dc:creator><![CDATA[Vellas]]></dc:creator><pubDate>Sun, 05 Nov 2006 16:49:52 GMT</pubDate></item></channel></rss>