<?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-Spez. soll von allg. Template abgeleitet sein...]]></title><description><![CDATA[<p>Moin,<br />
Ich versuche dem Compiler klar zu machen, dass eine Template-Spezialisierung eine Ableitung des allgemeinen Templates sein soll.</p>
<p>Hier der Code:</p>
<pre><code>template&lt;int I&gt; class D{};
template&lt;int J&gt; class D&lt;123&gt; : D&lt;J&gt;{};
</code></pre>
<p>Entweder beschwert er sich, dass ich J nicht nutze, oder, falls ich J als Parameter weg lasse, dass er nicht weiß was J ist.<br />
Den 2ten Fall kann ich noch nachvollziehen, aber warum er glaubt, ich würde J nicht nutzen verstehe ich nicht.</p>
<p>Hat jemand einen Vorschlag, wie das gehen könnte?</p>
<p>Gruß,<br />
0xMöbius!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/334444/template-spez-soll-von-allg-template-abgeleitet-sein</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 15:08:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/334444.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Sep 2015 16:33:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Mon, 14 Sep 2015 16:33:51 GMT]]></title><description><![CDATA[<p>Moin,<br />
Ich versuche dem Compiler klar zu machen, dass eine Template-Spezialisierung eine Ableitung des allgemeinen Templates sein soll.</p>
<p>Hier der Code:</p>
<pre><code>template&lt;int I&gt; class D{};
template&lt;int J&gt; class D&lt;123&gt; : D&lt;J&gt;{};
</code></pre>
<p>Entweder beschwert er sich, dass ich J nicht nutze, oder, falls ich J als Parameter weg lasse, dass er nicht weiß was J ist.<br />
Den 2ten Fall kann ich noch nachvollziehen, aber warum er glaubt, ich würde J nicht nutzen verstehe ich nicht.</p>
<p>Hat jemand einen Vorschlag, wie das gehen könnte?</p>
<p>Gruß,<br />
0xMöbius!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467962</guid><dc:creator><![CDATA[0xMöbius]]></dc:creator><pubDate>Mon, 14 Sep 2015 16:33:51 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Mon, 14 Sep 2015 18:06:45 GMT]]></title><description><![CDATA[<p>Sowas WÜRDE gehen:</p>
<pre><code>template &lt;int I&gt;
class A {};

template &lt;&gt;
class A &lt;1&gt; : public A &lt;0&gt;
{
};
</code></pre>
<p>Und sowas ergibt keinen Sinn: (Bedenke, was wenn J = 1? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> )</p>
<pre><code>template &lt;int I&gt;
class A {};

template &lt;int J&gt;
class A &lt;1&gt; : public A &lt;J&gt;
{
};
</code></pre>
<p>Außerdem finde ich es außerordentlich bedenklich, dass du eine Klasse quasi von sich selbst ableiten lässt.</p>
<p>EDIT: ob private oder public Vererbung ist ja grundsätzlich hier erstmal egal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467979</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Mon, 14 Sep 2015 18:06:45 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Mon, 14 Sep 2015 18:07:57 GMT]]></title><description><![CDATA[<p>Ich glaube so wie du dir das vorstellst geht es gar nicht. Man muss sich doch nur mal überlegen was passieren soll wenn man <code>D&lt;654&gt;</code> schreibt. Soll dann dann die &quot;normale&quot; <code>D&lt;654&gt;</code> Klasse genommen werden oder <code>D&lt;123&gt;</code> welche von <code>D&lt;654&gt;</code> erbt? Beides hat einen Template Parameter. Deine Hauptklasse müsste schon zwei Template Parameter haben und deine Spezialisierung nur eine. Sowas z.B.</p>
<pre><code>template&lt;int I, int J = 0&gt; class D {};
template&lt;int J&gt; class D&lt;123, J&gt; : D&lt;J&gt;{};
</code></pre>
<p>Wobei mir noch nicht klar ist was du mit der Vererbung erreichen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467980</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Mon, 14 Sep 2015 18:07:57 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Mon, 14 Sep 2015 19:46:17 GMT]]></title><description><![CDATA[<p>Danke schonmal für eure Antworten!<br />
Also ich habe mir dabei gedacht, dass ich, nur falls der Template-Parameter I = 123 ist, vom allgemeinen Fall ableiten möchte. Und für jeden anderen Wert eben den allgemeinen Fall ohne Ableitung nehmen möchte.<br />
Kann man da vielleicht irgendwas mit template-templates machen?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/21447">@5cript</a>:</p>
<blockquote>
<p>Und sowas ergibt keinen Sinn: (Bedenke, was wenn J = 1? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> )</p>
</blockquote>
<p>Ooohhh.... <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>Außerdem finde ich es außerordentlich bedenklich, dass du eine Klasse quasi von sich selbst ableiten lässt.</p>
</blockquote>
<p>Mal ne ernst gemeinte Frage: Ich dachte Klassen von Klassen-Templates sind genau genommen total verschieden (Mal den Fall J = 1 ausgenommen). Stimmt doch, oder?!<br />
Das war aber eh nur dazu gedacht, das Bsp minimal zu halten. Also, wie wärs damit:</p>
<pre><code>template&lt;int I&gt; class D{};
template&lt;int I&gt; class E{};
template&lt;int I&gt; class E&lt;0&gt; : D&lt;I&gt;{};
</code></pre>
<p>Das müsste doch alle deine Bedenken ausräumen...</p>
<p>@sebi707:</p>
<blockquote>
<p>Man muss sich doch nur mal überlegen was passieren soll wenn man D&lt;654&gt; schreibt. Soll dann dann die &quot;normale&quot; D&lt;654&gt; Klasse genommen werden oder D&lt;123&gt; welche von D&lt;654&gt; erbt?</p>
</blockquote>
<p>Also nach meiner persönlichen &quot;Logik&quot; (s.o.) sollte die normale genommen werden...</p>
<blockquote>
<p>Deine Hauptklasse müsste schon zwei Template Parameter haben und deine Spezialisierung nur eine. Sowas z.B.</p>
</blockquote>
<p>Hmm, das muss ich mir erst nochmal durch den Kopf gehen lassen.. Du meinst quasi eine Art Dummy-Parameter?!</p>
<blockquote>
<p>Wobei mir noch nicht klar ist was du mit der Vererbung erreichen willst.</p>
</blockquote>
<p>Mir so ganz auch nicht. Eigentlich wollte ich nur rausfinden, was so möglich ist.. ..z.B. um mir einiges an copy&amp;paste ersparen zu können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2467995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2467995</guid><dc:creator><![CDATA[0xMöbius]]></dc:creator><pubDate>Mon, 14 Sep 2015 19:46:17 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Mon, 14 Sep 2015 20:00:09 GMT]]></title><description><![CDATA[<p>0xMöbius schrieb:</p>
<blockquote>
<blockquote>
<p>Außerdem finde ich es außerordentlich bedenklich, dass du eine Klasse quasi von sich selbst ableiten lässt.</p>
</blockquote>
<p>Mal ne ernst gemeinte Frage: Ich dachte Klassen von Klassen-Templates sind genau genommen total verschieden (Mal den Fall J = 1 ausgenommen). Stimmt doch, oder?!</p>
<p>Das war aber eh nur dazu gedacht, das Bsp minimal zu halten. Also, wie wärs damit:</p>
<pre><code>template&lt;int I&gt; class D{};
template&lt;int I&gt; class E{};
template&lt;int I&gt; class E&lt;0&gt; : D&lt;I&gt;{};
</code></pre>
<p>Das müsste doch alle deine Bedenken ausräumen...</p>
</blockquote>
<ol>
<li>Ja</li>
<li>Da könnte ich viel besser schlafen <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="🙂"
    /></li>
</ol>
<p>Ich denke jedoch, dass deine ursprüngliche Idee leicht zu Verwirrung führen könnte. Da ich mich bei Vererbung immernoch an Meyers (EffectiveC++) halte (&quot;ist ein&quot; und &quot;ist implementiert in Form von&quot;), bin ich darauf gepolt Vererbung nicht zu stark zu missbrauchen.</p>
<p>EDIT: Konstrukte haben für mich oft genauso viel Bedeutung wie Namen.</p>
<p>Vielleicht haben Andere ja etwas anderes dazu zu sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468001</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Mon, 14 Sep 2015 20:00:09 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Mon, 14 Sep 2015 20:34:04 GMT]]></title><description><![CDATA[<p>0xMöbius schrieb:</p>
<blockquote>
<p>sebi707 schrieb:</p>
<blockquote>
<p>Man muss sich doch nur mal überlegen was passieren soll wenn man D&lt;654&gt; schreibt. Soll dann dann die &quot;normale&quot; D&lt;654&gt; Klasse genommen werden oder D&lt;123&gt; welche von D&lt;654&gt; erbt?</p>
</blockquote>
<p>Also nach meiner persönlichen &quot;Logik&quot; (s.o.) sollte die normale genommen werden...</p>
</blockquote>
<p>OK andere Frage. Wie willst du dann den J Template Parameter festlegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468005</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Mon, 14 Sep 2015 20:34:04 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Wed, 16 Sep 2015 17:39:10 GMT]]></title><description><![CDATA[<blockquote>
<ol start="2">
<li>Da könnte ich viel besser schlafen <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="🙂"
    /></li>
</ol>
</blockquote>
<p>Ich leider nicht. Denn zumindest mit dem gcc geht das auch nicht..<br />
Aber ich habe jetzt, denke ich verstanden was los ist:</p>
<blockquote>
<p>OK andere Frage. Wie willst du dann den J Template Parameter festlegen?</p>
</blockquote>
<p>Gute Frage..;) Ich hatte gehofft, dass der Compiler quasi eine Ersetzung macht. Wenn er also zB. &quot;.. : xy&lt;int I, typename T&gt;{};&quot; sieht, und irgendwo anders eben dieses &quot;xy&lt;int I, typename T&gt;{};&quot; existiert, er es einfach ersetzt. Tja falsch gedacht. Msvc scheint sowas zu machen, oder gemacht zu haben. Ich habe irgendwo gelesen, dass es funktioniert hat. Ich nutze aber nur den gcc.. Von daher <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>
<p>MfG<br />
0xMöbius</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468202</guid><dc:creator><![CDATA[0xMöbius]]></dc:creator><pubDate>Wed, 16 Sep 2015 17:39:10 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Wed, 16 Sep 2015 20:35:30 GMT]]></title><description><![CDATA[<p>0xMöbius schrieb:</p>
<blockquote>
<blockquote>
<ol start="2">
<li>Da könnte ich viel besser schlafen <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="🙂"
    /></li>
</ol>
</blockquote>
<p>Ich leider nicht. Denn zumindest mit dem gcc geht das auch nicht..</p>
</blockquote>
<p>Oh ja das habe ich gar nicht mehr ausprobiert.<br />
Wenn ich drüber nachdenke und es &quot;behebe&quot; findet sich die Information zur Ableitung schon in der nicht spezialisierten Klasse wieder (als Template Parameter).<br />
=&gt; Erste Antwort von sebi707</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468229</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Wed, 16 Sep 2015 20:35:30 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Thu, 17 Sep 2015 01:10:14 GMT]]></title><description><![CDATA[<p>Hast du das eigentlich schonmal so betrachtet?:</p>
<pre><code>template &lt;typename T&gt;
struct B
{
    /* EBCO */
};

template &lt;&gt;
struct B &lt;int&gt;
{
    int f();
    // ... more ...
    // Ersetzt Spezialisierung von C
};

template &lt;typename T&gt;
struct C : public B &lt;T&gt;
{
};
</code></pre>
<p>Es ist nicht genau das gleiche, aber je nach Anwendungsfall könnte man dies als Alternative wählen.<br />
Ich sehe aber immernoch keinen sinnvollen Use Case...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2468233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468233</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Thu, 17 Sep 2015 01:10:14 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Spez. soll von allg. Template abgeleitet sein... on Fri, 18 Sep 2015 16:07:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Hast du das eigentlich schonmal so betrachtet?:</p>
</blockquote>
<p>Habe ich tatsächlich.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    /><br />
Aber wegen der ganzen Operatore (+Ctor/Dtor) wollte ich eher die abgeleitete Klasse spezialisieren.<br />
Ist es hier möglich direkt die OPs der Basisklasse zu nutzen??<br />
Irgendwas mit &quot;using&quot; vielleicht?<br />
Und was ist z.B. mit dem Ctor/Dtor, oder dem Cast-OP?</p>
<p>Ich habe keine Ahnung, wie das gehen könnte...</p>
<blockquote>
<p>Ich sehe aber immernoch keinen sinnvollen Use Case...</p>
</blockquote>
<p>Der kommt vielleicht später, wenn ich weiß, was ich überhaupt mache. Evtl., um es mit deinen Worten zu sagen, ein &quot;zu starker Missbrauch von Vererbung&quot;. <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/2468422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2468422</guid><dc:creator><![CDATA[0xMöbius]]></dc:creator><pubDate>Fri, 18 Sep 2015 16:07:11 GMT</pubDate></item></channel></rss>