<?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[Warum brauche ich typename in folgendem Kontext?]]></title><description><![CDATA[<pre><code>struct foo
{
    template &lt;typename T&gt;
    struct bar
    {
       typedef typename T::template bar&lt;T&gt; type; // (!)
    };
};
</code></pre>
<p>T ist ein Template-Parameter, ergo ist es ein Typ. Das ergibt doch gar keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310327/warum-brauche-ich-typename-in-folgendem-kontext</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 19:27:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310327.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 08 Nov 2012 19:42:26 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum brauche ich typename in folgendem Kontext? on Thu, 08 Nov 2012 19:42:26 GMT]]></title><description><![CDATA[<pre><code>struct foo
{
    template &lt;typename T&gt;
    struct bar
    {
       typedef typename T::template bar&lt;T&gt; type; // (!)
    };
};
</code></pre>
<p>T ist ein Template-Parameter, ergo ist es ein Typ. Das ergibt doch gar keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269079</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Thu, 08 Nov 2012 19:42:26 GMT</pubDate></item><item><title><![CDATA[Reply to Warum brauche ich typename in folgendem Kontext? on Thu, 08 Nov 2012 20:08:10 GMT]]></title><description><![CDATA[<pre><code>struct foo
{
    template &lt;typename T&gt;
    struct bar
    {
       typedef typename T::template bar&lt;T&gt; type; 
    };

  template &lt;typename T&gt;
  static void fubar()
  {
    T::template fubar&lt;T&gt; ();  // Hoppla, gleichartiger Ausdruck, aber nun ist's kein Typ, sondern eine Funktion.
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2269095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269095</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 08 Nov 2012 20:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to Warum brauche ich typename in folgendem Kontext? on Fri, 09 Nov 2012 09:07:02 GMT]]></title><description><![CDATA[<p>Was bedeutet denn T::template ?<br />
Das habe ich so noch nicht gesehen <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/2269179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269179</guid><dc:creator><![CDATA[Lexer_]]></dc:creator><pubDate>Fri, 09 Nov 2012 09:07:02 GMT</pubDate></item><item><title><![CDATA[Reply to Warum brauche ich typename in folgendem Kontext? on Fri, 09 Nov 2012 09:45:01 GMT]]></title><description><![CDATA[<p>Lexer_ schrieb:</p>
<blockquote>
<p>Was bedeutet denn T::template ?<br />
Das habe ich so noch nicht gesehen <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>
</blockquote>
<p>Das T:: gehört da nur bedingt dazu. Das template ist aus dem gleichen Grund da, aus dem man für abhängige Typen ein typename braucht. Der Compiler muss wissen, dass in diesem Zusammenhang bar als ein Template angesehen werden soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269195</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Nov 2012 09:45:01 GMT</pubDate></item><item><title><![CDATA[Reply to Warum brauche ich typename in folgendem Kontext? on Fri, 09 Nov 2012 09:59:55 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Lexer_ schrieb:</p>
<blockquote>
<p>Was bedeutet denn T::template ?<br />
Das habe ich so noch nicht gesehen <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>
</blockquote>
<p>Das T:: gehört da nur bedingt dazu. Das template ist aus dem gleichen Grund da, aus dem man für abhängige Typen ein typename braucht. Der Compiler muss wissen, dass in diesem Zusammenhang bar als ein Template angesehen werden soll.</p>
</blockquote>
<p>Wird das nur im Kontext eines typedefs verwendet, oder kann diese Syntax noch irgendwo auftauchen?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269201</guid><dc:creator><![CDATA[Lexer_]]></dc:creator><pubDate>Fri, 09 Nov 2012 09:59:55 GMT</pubDate></item><item><title><![CDATA[Reply to Warum brauche ich typename in folgendem Kontext? on Fri, 09 Nov 2012 10:15:48 GMT]]></title><description><![CDATA[<p>Die kann logischerweise überall da auftauchen, wo du ein Template aus einem &quot;abhängigen&quot; Namen haben willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2269205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269205</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Fri, 09 Nov 2012 10:15:48 GMT</pubDate></item><item><title><![CDATA[Reply to Warum brauche ich typename in folgendem Kontext? on Fri, 09 Nov 2012 10:59:23 GMT]]></title><description><![CDATA[<p>Du brauchst diese Form (-&gt;template, .template, ::template, ...), weil der Compiler wissen muss, dass das &lt;, was folgt, kein kleiner-als ist sondern eine template argument list.</p>
<p>Standard:<br />
N3337 § 14.2 / 4</p>
<blockquote>
<p>When the name of a member template specialization appears after . or -&gt; in a postfix-expression or after a<br />
nested-name-specifier in a qualified-id, and the object expression of the postfix-expression is type-dependent<br />
or the nested-name-specifier in the qualified-id refers to a dependent type, but the name is not a member of<br />
the current instantiation (14.6.2.1), the member template name must be prefixed by the keyword template</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2269218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2269218</guid><dc:creator><![CDATA[sone_logoff]]></dc:creator><pubDate>Fri, 09 Nov 2012 10:59:23 GMT</pubDate></item></channel></rss>