<?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-Templates]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich bekomme es gerade nicht hin, wie kann man so etwas lösen?:</p>
<pre><code class="language-cpp">template&lt;typename T&gt; class A
{
};

template&lt;typename T&gt; class B
{
};

template&lt;typename T, typename F&lt;T&gt; &gt; class X
{
};

X&lt; char, A&lt;char&gt; &gt; x;
</code></pre>
<p>Ich will also erzwingen, dass der Templateparameter F zu der Klasse X selbst eine Templateklasse ist, die auch den Parameter T hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/204775/template-templates</link><generator>RSS for Node</generator><lastBuildDate>Thu, 08 Oct 2026 18:50:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/204775.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Feb 2008 20:34:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Templates on Wed, 06 Feb 2008 20:34:47 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich bekomme es gerade nicht hin, wie kann man so etwas lösen?:</p>
<pre><code class="language-cpp">template&lt;typename T&gt; class A
{
};

template&lt;typename T&gt; class B
{
};

template&lt;typename T, typename F&lt;T&gt; &gt; class X
{
};

X&lt; char, A&lt;char&gt; &gt; x;
</code></pre>
<p>Ich will also erzwingen, dass der Templateparameter F zu der Klasse X selbst eine Templateklasse ist, die auch den Parameter T hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1450844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450844</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 06 Feb 2008 20:34:47 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Templates on Wed, 06 Feb 2008 20:49:24 GMT]]></title><description><![CDATA[<p>willst du einen template-template parameter und den selbst mit dem ersten template-argument spezialisieren (1), oder willst du eine spezialisierung für dein template darauf, dass das zweite argument mit dem ersten parametrisiert sein muss (2)?</p>
<pre><code class="language-cpp">//(1)
template &lt;class T, template &lt;class&gt; class U&gt;
struct Foo
{
   typedef U&lt;T&gt; AutoU;
};

//(2)
template &lt;class T, class U&gt;
struct Bar;

//Spezialisierung
template &lt;class T, template &lt;class&gt; class U&gt;
struct Bar&lt;T, U&lt;T&gt; &gt;
{
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1450859</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450859</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Wed, 06 Feb 2008 20:49:24 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Templates on Wed, 06 Feb 2008 20:55:50 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Hi!</p>
<p>Ich bekomme es gerade nicht hin, wie kann man so etwas lösen?:</p>
<pre><code class="language-cpp">template&lt;typename T&gt; class A
{
};

template&lt;typename T&gt; class B
{
};

template&lt;typename T, typename F&lt;T&gt; &gt; class X
{
};

X&lt; char, A&lt;char&gt; &gt; x;
</code></pre>
<p>Ich will also erzwingen, dass der Templateparameter F zu der Klasse X selbst eine Templateklasse ist, die auch den Parameter T hat.</p>
</blockquote>
<p>Durch partielle Spezialisierung:</p>
<pre><code class="language-cpp">template&lt;typename T&gt; class A;

template&lt;typename T, typename U &gt; class X; // bleibt undefiniert

template&lt;typename T, template&lt;typename&gt; class TT&gt; class X&lt; T, TT&lt; T &gt; &gt;
{
...
};
// oder besser in Hinblick auf eine brauchbare Fehlermeldung:
template&lt;typename T, typename U &gt; class Y
{
    BOOST_STATIC_ASSERT(( is_template_class_with_1_type_parameter&lt; U, T &gt; ));
...
};
// mit Hilfstemplate nach obigem Schema:
template&lt;typename, typename&gt; struct is_template_class_with_1_type_parameter { static const bool value = false; };
template&lt;typename T, template&lt;typename&gt; class TT&gt; struct is_template_class_with_1_type_parameter&lt; TT&lt; T &gt;, T &gt; { static const bool value = true; };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1450865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450865</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 06 Feb 2008 20:55:50 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Templates on Wed, 06 Feb 2008 21:40:13 GMT]]></title><description><![CDATA[<p>Juchu, danke euch! Genau, ich suchte die partielle Spezialisierung, hatte aber gedacht, dass man das direkt irgendwie angeben kann, keine Ahnung... Ich glaube, ich setze aber doch queer_boys (1)-Methode ein <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/1450904</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1450904</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 06 Feb 2008 21:40:13 GMT</pubDate></item></channel></rss>