<?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[Verschachtelte Template-Argumente]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich mache so selten was komplizierteres mit Templates und weiß grad nicht weiter, Google und Boardsuche haben mir auch nichts gebracht. Und zwar würde ich für eine Template-Funktion gerne einen Template-Typ angeben, der aber selbst eine Templateklasse mit einem bestimmten Template-Parameter sein muss.<br />
So in etwa meine ich das:</p>
<pre><code class="language-cpp">template&lt; typename Container&lt;int&gt; &gt;
void bla( const Container&amp; x, const Container&amp; y )  { ... }
</code></pre>
<p>Ich meine mich zu erinnern, dass das vielleicht gar nicht ging? Mag mir jemand Klarheit verschaffen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/218013/verschachtelte-template-argumente</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 07:03:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/218013.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 14 Jul 2008 18:59:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 18:59:48 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich mache so selten was komplizierteres mit Templates und weiß grad nicht weiter, Google und Boardsuche haben mir auch nichts gebracht. Und zwar würde ich für eine Template-Funktion gerne einen Template-Typ angeben, der aber selbst eine Templateklasse mit einem bestimmten Template-Parameter sein muss.<br />
So in etwa meine ich das:</p>
<pre><code class="language-cpp">template&lt; typename Container&lt;int&gt; &gt;
void bla( const Container&amp; x, const Container&amp; y )  { ... }
</code></pre>
<p>Ich meine mich zu erinnern, dass das vielleicht gar nicht ging? Mag mir jemand Klarheit verschaffen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1547313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547313</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 14 Jul 2008 18:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 19:06:55 GMT]]></title><description><![CDATA[<p>So etwas ist für eine partielle Spezialisierung möglich, die fällt bei Funktionstemplates natürlich aus. Dort können wir aber auf Typdeduktion aus dem Argument ausweichen:</p>
<pre><code class="language-cpp">template&lt; template &lt;typename&gt; class TT &gt;
void bla( const TT&lt;int&gt;&amp; x, const TT&lt;int&gt;&amp; y )  { ... }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1547317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547317</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 14 Jul 2008 19:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 19:18:43 GMT]]></title><description><![CDATA[<p>Cool, das sieht gut aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> Nur hab ich keine Ahnung, wie ich die Funktion dann aufrufen kann <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>Der Compiler (von MSVC++ 2005) meckert bei</p>
<pre><code class="language-cpp">int main()
{
	std::vector&lt;int&gt; x, y;
	bla( x, y );
}
</code></pre>
<p>, aber auch bei <code>bla&lt;std::vector&gt;( x, y );</code> oder <code>bla&lt;std::vector&lt;int&gt; &gt;( x, y );</code> .</p>
<p>Der Online-Comeau (<a href="http://www.comeaucomputing.com/tryitout/" rel="nofollow">http://www.comeaucomputing.com/tryitout/</a>) mag's auch nicht <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=":-/"
      alt="😕"
    /></p>
<p>edit: Kacke, scheint am Default-Allocator vom vector zu liegen.. Aber danke dir trotzdem für die schnelle Lösung camper! (Ich glaube bei der partiellen Spezialisierung hattest du mir auch schon mal weitergeholfen..)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1547325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547325</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 14 Jul 2008 19:18:43 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 19:21:51 GMT]]></title><description><![CDATA[<p>Dafür reicht aber auch:</p>
<pre><code class="language-cpp">template&lt; typename TT &gt;
void bla( const TT&amp; x, const TT&amp; y )  {  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1547333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547333</guid><dc:creator><![CDATA[David_pb]]></dc:creator><pubDate>Mon, 14 Jul 2008 19:21:51 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 19:24:43 GMT]]></title><description><![CDATA[<p><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>
<p>So wie du die Funktion aufrufst, ist mir nicht ganz klar warum da eine einfaches Template nicht ausreichend sein soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1547336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547336</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Mon, 14 Jul 2008 19:24:43 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 19:26:03 GMT]]></title><description><![CDATA[<p>war zu langsam <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/1547337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547337</guid><dc:creator><![CDATA[Kritiker]]></dc:creator><pubDate>Mon, 14 Jul 2008 19:26:03 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 19:30:30 GMT]]></title><description><![CDATA[<p>Bei Templates mit Defaultargument funktioniert das so tatsächlich nicht. Es gibt natürlich auch andere Mittel und Wege.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
typename enable_if&lt;is_same&lt;typename T::value_type,int&gt; &gt;::type void bla( const T&amp; x, const T&amp; y );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1547340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547340</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 14 Jul 2008 19:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 19:56:57 GMT]]></title><description><![CDATA[<p>David_pb schrieb:</p>
<blockquote>
<p>Dafür reicht aber auch:</p>
<pre><code class="language-cpp">template&lt; typename TT &gt;
void bla( const TT&amp; x, const TT&amp; y )  {  }
</code></pre>
</blockquote>
<p>Schon, aber ich finde es schon immer schön, wenn's aus der Signatur halbwegs deutlich wird, was man übergeben muss.</p>
<p>camper schrieb:</p>
<blockquote>
<p>Bei Templates mit Defaultargument funktioniert das so tatsächlich nicht. Es gibt natürlich auch andere Mittel und Wege.</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
typename enable_if&lt;is_same&lt;typename T::value_type,int&gt; &gt;::type void bla( const T&amp; x, const T&amp; y );
</code></pre>
</blockquote>
<p>Sieht interessant aus, kompiliert aber leider nich ('boost::enable_if&lt;boost::is_same&lt;T::value_type,int&gt;&gt;::type' gefolgt von 'void' unzulässig). Ich würd auch selber mit enable_if und is_same rumspielen, muss mich da aber erstmal einarbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1547352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547352</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 14 Jul 2008 19:56:57 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 20:39:00 GMT]]></title><description><![CDATA[<p>enable_if ist eigentlich unglaublich simpel:<br />
Ist das erste Argument wahr, dann ist typename enable_if&lt;C, T&gt;::type == T.<br />
Ansonsten kommt es zu einem &quot;Substitution Failure&quot;, was diese Spezialisierung der Funktion deaktiviert.<br />
camper meinte wohl</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
typename enable_if&lt;is_same&lt;typename T::value_type,int&gt;, void&gt;::type bla( const T&amp; x, const T&amp; y );
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1547372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547372</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 14 Jul 2008 20:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 20:50:19 GMT]]></title><description><![CDATA[<p>Krasse Sache. *staun*!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1547379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547379</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 14 Jul 2008 20:50:19 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 22:02:33 GMT]]></title><description><![CDATA[<p>Da hatte ich beim C&amp;P+Edit versehentlich vergessen, das void wegzumachen. Das ist auch Defaultargument von enable_if, eigentlich wollte ich</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
typename enable_if&lt;is_same&lt;typename T::value_type,int&gt; &gt;::type bla( const T&amp; x, const T&amp; y );
</code></pre>
<p>Obwohl es in diesem Falle vielleicht sogar besser explizit dastehen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1547399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547399</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 14 Jul 2008 22:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to Verschachtelte Template-Argumente on Mon, 14 Jul 2008 22:16:52 GMT]]></title><description><![CDATA[<p>Wegen der Lesbarkeit? <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/1547404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1547404</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 14 Jul 2008 22:16:52 GMT</pubDate></item></channel></rss>