<?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[Spezialisierung von Template-Klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>unserer Prof hat gemeint, dass es nur die Wege gibt, eine Template-Klasse zu spezialisieren</p>
<ol>
<li>
<p>globale Template-Funktionen schreiben, diese spezialisieren und aus den Klassenmethoden heraus delegieren</p>
</li>
<li>
<p>eine Klasse von einer Template-Klasse ableiten und die speziellen Methoden überschreiben</p>
</li>
<li>
<p>die gesamte Klasse kopieren und die Typvariablen durch den speziellen Typ ersetzen</p>
</li>
</ol>
<p>Beides ist nicht wirklich toll zu machen. Gibt es da keine andere Möglichkeit? Die Spezialisierung direkt in die Klasse unter die Methode zu schreiben, wäre wohl ideal, aber das geht laut Prof ja nicht.</p>
<p>Danke,<br />
Thilo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/326611/spezialisierung-von-template-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 31 May 2026 09:57:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/326611.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Jun 2014 14:07:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 14:07:25 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>unserer Prof hat gemeint, dass es nur die Wege gibt, eine Template-Klasse zu spezialisieren</p>
<ol>
<li>
<p>globale Template-Funktionen schreiben, diese spezialisieren und aus den Klassenmethoden heraus delegieren</p>
</li>
<li>
<p>eine Klasse von einer Template-Klasse ableiten und die speziellen Methoden überschreiben</p>
</li>
<li>
<p>die gesamte Klasse kopieren und die Typvariablen durch den speziellen Typ ersetzen</p>
</li>
</ol>
<p>Beides ist nicht wirklich toll zu machen. Gibt es da keine andere Möglichkeit? Die Spezialisierung direkt in die Klasse unter die Methode zu schreiben, wäre wohl ideal, aber das geht laut Prof ja nicht.</p>
<p>Danke,<br />
Thilo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405745</guid><dc:creator><![CDATA[Thilo87]]></dc:creator><pubDate>Thu, 26 Jun 2014 14:07:25 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 16:18:32 GMT]]></title><description><![CDATA[<p>Thilo87 schrieb:</p>
<blockquote>
<ol>
<li>
<p>...</p>
</li>
<li>
<p>...</p>
</li>
<li>
<p>...</p>
</li>
</ol>
<p><strong>Beides</strong> ist nicht wirklich toll zu machen.</p>
</blockquote>
<p>Nett <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>Gib mal Codebeispiele dazu, was das genau meint.</p>
<p>Z.B. die dritte Möglichkeit kommt in der freien Wildbahn nur extrem selten vor, jedenfalls bei komplexen Klassen (Beispiel std::vector&lt;bool&gt;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405761</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 26 Jun 2014 16:18:32 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 16:22:39 GMT]]></title><description><![CDATA[<p>4.) SFINAE</p>
<p>Damit hätten wir schon drei Sachen <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>(falls ich überhaupt verstanden habe was er meint)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405763</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405763</guid><dc:creator><![CDATA[ScottZhang]]></dc:creator><pubDate>Thu, 26 Jun 2014 16:22:39 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 18:36:02 GMT]]></title><description><![CDATA[<p>Ja, die dritte Möglichkeit war mir erst später eingefallen, nachdem ich schon &quot;Beide&quot; geschrieben hatte <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>Also ich meine, man hat eine Template-Klasse und in dieser eine Methode</p>
<pre><code>template &lt;typename T&gt;
class Klasse
{
...

public:
...

T gibWas () const
{
   T was( 1, 2 ) ;
   T.irgendwas( 3 ) ;

   return was ;
}

}
</code></pre>
<p>Jetzt ist es so, dass für ein spezielles T, z.B. T == string, statt</p>
<pre><code>T was( 1, 2 ) ;
    T.irgendwas( 3 ) ;
</code></pre>
<p>das hier aufgerufen werden muss</p>
<pre><code>T was( 1, 2 ) ;
    T.irgendwasanderes ( 3 ) ;
</code></pre>
<p>Es ist nur diese eine Methode, die speziell für T == string eine andere, spezielle Semantik braucht. Für die restlichen unendlich vielen T gilt die originale Semantik.<br />
Da bleiben einem jetzt laut Prof die obigen drei Möglichkeiten, die aber eben alle nicht so toll sind.</p>
<p>Gibt es da eventuell doch noch bessere Möglichkeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405777</guid><dc:creator><![CDATA[Thilo87]]></dc:creator><pubDate>Thu, 26 Jun 2014 18:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 19:06:49 GMT]]></title><description><![CDATA[<p>Ja, kein Problem: Templatemethodenspezialisierung.</p>
<pre><code>template &lt;&gt;
std::string Klasse&lt;std::string&gt;::gibWas() const
{
  std::string was( 1, 2 ) ;
  std::string().irgendwasanderes ( 3 ) ;	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2405779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405779</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 26 Jun 2014 19:06:49 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 19:19:21 GMT]]></title><description><![CDATA[<p>Und wenn du einen Comnpilererror willst, falls irgendwer versucht deine default-Template zu verwenden kannst du das so machen:</p>
<pre><code>template&lt;typename T&gt; T func() {T::undefined_function_call(); return T();}
template&lt;&gt; int func() {/* do your thing */}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2405781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405781</guid><dc:creator><![CDATA[JulianH]]></dc:creator><pubDate>Thu, 26 Jun 2014 19:19:21 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 19:20:46 GMT]]></title><description><![CDATA[<p>Oder seit C++11 template&lt;typename T&gt; T func() = delete;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2405783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405783</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 26 Jun 2014 19:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 20:04:03 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Oder seit C++11 template&lt;typename T&gt; T func() = delete;</p>
</blockquote>
<p>Hah!<br />
Det kannte ich noch gar nicht. Cool <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/2405788</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405788</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 26 Jun 2014 20:04:03 GMT</pubDate></item><item><title><![CDATA[Reply to Spezialisierung von Template-Klassen on Thu, 26 Jun 2014 20:05:36 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Oder seit C++11 template&lt;typename T&gt; T func() = delete;</p>
</blockquote>
<p>Hah!<br />
Det kannte ich noch gar nicht. Cool <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>
</blockquote>
<p>Ich musst es nach dem Schreiben auch erst mal durch ideone jagen, um zu gucken obs überhaupt geht. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2405790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2405790</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Thu, 26 Jun 2014 20:05:36 GMT</pubDate></item></channel></rss>