<?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] template &amp;quot;template-argument&amp;quot;]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt; typename T &gt;
class A {public: T a; };

template&lt; typename T1, typename T2 &gt;
class B {public: T1 c; T2 d;};

int main()
{
   B&lt; A&lt;double&gt;, double&gt; Test0; //funzt natürlich
   B&lt; A&lt;double&gt;, float&gt; Test1; //funzt natürlich auch, soll aber nicht!
}
</code></pre>
<p>wie kann ich sicherstellen, dass das verwendete template argument von T1 bei der klasse B den Typ T2 besitzt?</p>
<p>Wie muss ich dahingehend die template klasse anpassen.</p>
<p>Der erste Typ (T2) soll letztlich der container Typ von T1 sein.<br />
Jedoch benötigt B explizit den T2 ebenfalls.</p>
<p><strong>Also Test1 soll gar nicht möglich sein...</strong></p>
<p><strong>edit:</strong> ups, hab da was vergessen <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="😉"
    /> sorry, andrey</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179709/template-template-quot-template-argument-quot</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 09:00:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179709.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Apr 2007 16:10:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 16:17:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt; typename T &gt;
class A {public: T a; };

template&lt; typename T1, typename T2 &gt;
class B {public: T1 c; T2 d;};

int main()
{
   B&lt; A&lt;double&gt;, double&gt; Test0; //funzt natürlich
   B&lt; A&lt;double&gt;, float&gt; Test1; //funzt natürlich auch, soll aber nicht!
}
</code></pre>
<p>wie kann ich sicherstellen, dass das verwendete template argument von T1 bei der klasse B den Typ T2 besitzt?</p>
<p>Wie muss ich dahingehend die template klasse anpassen.</p>
<p>Der erste Typ (T2) soll letztlich der container Typ von T1 sein.<br />
Jedoch benötigt B explizit den T2 ebenfalls.</p>
<p><strong>Also Test1 soll gar nicht möglich sein...</strong></p>
<p><strong>edit:</strong> ups, hab da was vergessen <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="😉"
    /> sorry, andrey</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272604</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Tue, 24 Apr 2007 16:17:55 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 16:25:39 GMT]]></title><description><![CDATA[<blockquote>
<p>wie kann ich sicherstellen, dass T1 und T2 vom selben Typ sind?</p>
</blockquote>
<p>T2 überall durch T1 ersetzen?</p>
<p>\edit ne, ich seh da grad, dass du doch nicht das sagst, was du willst... T2 soll also doch der container von T1 sein, das ist ja nicht &quot;vom selben Typ&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>\edit: weiß nicht genau, ob so etwas überhaupt geht...<br />
zum beispiel: bei stl-containern ist es ja aus diesem grunde ebenfalls theoretisch möglich, irgendeine verkrüppelte template klasse zu erzeugen, indem man dem allocator einen anderen typ, als dem container selbst übergibt:</p>
<pre><code class="language-cpp">vector&lt;int, allocator&lt;char&gt;&gt; mutilatedVector; //was spricht denn dagegen?
</code></pre>
<p>in so einem fall gibts natürlich mächtig ärger... aber erst zur laufzeit <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1272607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272607</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Tue, 24 Apr 2007 16:25:39 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 17:58:56 GMT]]></title><description><![CDATA[<p>Du willst also den Container und den Typ mit dem der Container instanziiert wurde.</p>
<p>Die STL-Container haben alle ein typedef namens container::<strong>value_type</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272680</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272680</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Tue, 24 Apr 2007 17:58:56 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 18:01:48 GMT]]></title><description><![CDATA[<p>Lösung: 'B' privat machen (z.B. in einen Namensbereich 'impl' schmeißen) und eine öffentliche Metafunktion als Typenalias für B zur Verfügung stellen. Das ist gängige Praxis.</p>
<p>Also:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct B {
    typedef typename impl::B&lt;A&lt;T&gt;, T&gt; Type;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1272685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272685</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Tue, 24 Apr 2007 18:01:48 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 20:07:39 GMT]]></title><description><![CDATA[<p>Lösong: template template parameter:</p>
<pre><code class="language-cpp">template&lt;template &lt;class, class&gt; class C, class T&gt;
class foo
{
public:
	static void test()
	{
		std::cout &lt;&lt; typeid(C&lt;T, std::allocator&lt;T&gt; &gt;).name() &lt;&lt; std::endl;
	}
};
</code></pre>
<p>Doof ist bloss dass dabei default Parameter nichtmehr funktionieren, du musst also beim &quot;template template parameter deklarieren&quot; oben &quot;class, class&quot; schreiben, und beim Verwenden unten eben auch &quot;T, std::allocator&lt;T&gt;&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272793</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Apr 2007 20:07:39 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 20:16:07 GMT]]></title><description><![CDATA[<blockquote>
<p>Doof ist bloss dass dabei default Parameter nichtmehr funktionieren</p>
</blockquote>
<p>jo, das ist in der tat schade.... :p</p>
<p>@OP: warum lässt du es nicht einfach so wie es ist, und passt einfach auf, dass du keinen offensichtlichen unsinn instanziiert? Also, ich meine, wenn die ganzen STL-container mit dieser macke gebaut sind, und bisher immer prima funktionieren, dann ist es doch okay, einfach zwei unabhängige typen zu nehmen... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272798</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Tue, 24 Apr 2007 20:16:07 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 20:24:35 GMT]]></title><description><![CDATA[<p>Die STL Container sind mit dieser Macke gebaut da es damals AFAIK noch keine template template parameter gab.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272807</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Apr 2007 20:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Tue, 24 Apr 2007 20:52:19 GMT]]></title><description><![CDATA[<p>oha... das hab ich nicht gewusst, ich dachte die entwickler wären einfach zu faul <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>\edit: aber ich meine trotzdem: kleine unbedeutende macke, solange der programmierer nicht versucht, das programm quasi absichtlich zu sabotieren, gibt es damit nie probleme, also was solls... klappt doch... hab noch nie gesehen, dass sich jemand über die STL-container deswegen beschwert hat... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /><br />
[na jut, ich hab auch nicht allzuviel gesehen, aber immerhin :p ]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272830</guid><dc:creator><![CDATA[Andrey]]></dc:creator><pubDate>Tue, 24 Apr 2007 20:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to [template] template &amp;quot;template-argument&amp;quot; on Wed, 25 Apr 2007 06:21:35 GMT]]></title><description><![CDATA[<p>danke an alle!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272914</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 25 Apr 2007 06:21:35 GMT</pubDate></item></channel></rss>