<?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[wirken template-Spezialisierungen sich auch auf abgeleitete templates aus?]]></title><description><![CDATA[<p>folgendes Szenario: ich habe ein template-struct mit typedefs und ein paar structs, die davon erben:</p>
<pre><code class="language-cpp">template &lt;typename LType, typename RType&gt;
struct addition_like_traits {
  typedef foo result_type;
};

template &lt;typename LType, typename RType&gt;
struct add_traits : public addition_like_traits {
};  //add_traits&lt;X,Y&gt;::result_type ist jetzt foo

template &lt;typename LType, typename RType&gt;
struct diff_traits : public addition_like_traits {
};
</code></pre>
<p>wenn ich das basis-template jetzt nach der definition der abgeleiteten templates spezialisiere, erben dann die abgeleiteten templates davon?</p>
<pre><code class="language-cpp">template&lt;&gt;
struct addition_like_traits&lt;int, double&gt; {
  typedef result_type double;
}; //ist add_traits&lt;int, double&gt;::return_type jetzt double oder noch foo?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/206300/wirken-template-spezialisierungen-sich-auch-auf-abgeleitete-templates-aus</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 07:56:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206300.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 23 Feb 2008 12:18:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to wirken template-Spezialisierungen sich auch auf abgeleitete templates aus? on Sat, 23 Feb 2008 12:18:56 GMT]]></title><description><![CDATA[<p>folgendes Szenario: ich habe ein template-struct mit typedefs und ein paar structs, die davon erben:</p>
<pre><code class="language-cpp">template &lt;typename LType, typename RType&gt;
struct addition_like_traits {
  typedef foo result_type;
};

template &lt;typename LType, typename RType&gt;
struct add_traits : public addition_like_traits {
};  //add_traits&lt;X,Y&gt;::result_type ist jetzt foo

template &lt;typename LType, typename RType&gt;
struct diff_traits : public addition_like_traits {
};
</code></pre>
<p>wenn ich das basis-template jetzt nach der definition der abgeleiteten templates spezialisiere, erben dann die abgeleiteten templates davon?</p>
<pre><code class="language-cpp">template&lt;&gt;
struct addition_like_traits&lt;int, double&gt; {
  typedef result_type double;
}; //ist add_traits&lt;int, double&gt;::return_type jetzt double oder noch foo?
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1461412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461412</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 23 Feb 2008 12:18:56 GMT</pubDate></item><item><title><![CDATA[Reply to wirken template-Spezialisierungen sich auch auf abgeleitete templates aus? on Sat, 23 Feb 2008 12:34:56 GMT]]></title><description><![CDATA[<p>weder noch, Templates können nicht erben, nur Klassen tun das, folglich musst du in der Basisklassenliste schon die jeweilige Spezialisierung angeben, von der geerbt werden soll:</p>
<pre><code>template &lt;typename LType, typename RType&gt;
struct add_traits : public addition_like_traits&lt;LType,RType&gt; {
};
</code></pre>
<p>Falls du jetzt addition_like_traits wie angegeben explizit spezialisierst, wird diese Klasse immer an Stelle des Primärtemplates für diese Templateargumente verwendet werden (das ist ja der Sinn der Sache).</p>
<p>add_traits&lt;int,double&gt; erbt (sofern es nicht seinerseits anders spezialisiert wurde) von addition_like_traits&lt;int, double&gt;.<br />
addition_like_traits&lt;int, double&gt; wurde von dir explizit spezialisiert und wird an Stelle der entsprechenden Ausprägung des Primärtemplates verwendet.</p>
<p>Wichtig ist nur, dass die explizite Spezialisierung durchgeführt wird, bevor das Primäretemplate add_traits für die gleichen Templateargumente explizit oder implizit instantiiert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461436</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 23 Feb 2008 12:34:56 GMT</pubDate></item><item><title><![CDATA[Reply to wirken template-Spezialisierungen sich auch auf abgeleitete templates aus? on Sat, 23 Feb 2008 13:24:57 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>weder noch, Templates können nicht erben, nur Klassen tun das,</p>
</blockquote>
<p>Klar, war blöd hingeschrieben, sry.</p>
<blockquote>
<p>add_traits&lt;int,double&gt; erbt (sofern es nicht seinerseits anders spezialisiert wurde) von addition_like_traits&lt;int, double&gt;.<br />
addition_like_traits&lt;int, double&gt; wurde von dir explizit spezialisiert und wird an Stelle der entsprechenden Ausprägung des Primärtemplates verwendet.</p>
<p>Wichtig ist nur, dass die explizite Spezialisierung durchgeführt wird, bevor das Primäretemplate add_traits für die gleichen Templateargumente explizit oder implizit instantiiert wird.</p>
</blockquote>
<p>Genau das wollte ich erreichen, danke <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>
<p>bevor ich groß weitermache, noch eine Frage: gibt es bereits eine Bibliothek, die wie bei mir angedeutet die Ergebnitypen von Operatoren via typedefs in templates angibt? Wird sonst ne Heidenarbeit, das für alle möglichen standardtypen zu machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1461486</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1461486</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sat, 23 Feb 2008 13:24:57 GMT</pubDate></item></channel></rss>