<?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[Bekomme warnings nicht entfernt]]></title><description><![CDATA[<p>Unter Linux versuche ich mit dem gcc 3.3.5. eine Templateklasse zu compilieren, mein 7bener Visual Studio compiliert das Ganze selbst auf Warning Level 4 ohne Murren. Der Code wurde ursprünglich mit einem älteren gcc erstellt und sorgt jetzt überall dort, <strong>wo die std::map</strong> verwendet wird, für Warnungen.</p>
<p>Hier ein Beispiel:</p>
<p>Code:</p>
<pre><code class="language-cpp">template &lt;class TKEY, class TDATA&gt;
class Container
{
	public:

		bool entry(const TKEY &amp;key, const TDATA &amp;data)
		{ 	
			pair&lt;map&lt;const TKEY, TDATA, compare&gt;::iterator, bool&gt; P = m_container.insert(pair&lt;TKEY const, TDATA&gt;(key, data));
			return P.second;
		}

		// [...]

private:
	struct compare	
	{
	    bool operator()(const TKEY k1, const TKEY k2) const
		{
		return (k1 &lt; k2);
		}
	};	
        // [...]
};
</code></pre>
<p>Die Fehlermeldungen zu der pair-Zeile:</p>
<blockquote>
<p>**gcc 3.3.5<br />
warning:</p>
<p>`std::map&lt;const TKEY, TDATA, Container&lt;TKEY, TDATA&gt;::compare,<br />
std::allocator&lt;std::pair&lt;const _Key, _Tp&gt; &gt; &gt;::iterator'</p>
<p>is implicitly a typename<br />
**</p>
</blockquote>
<p>Sowie</p>
<blockquote>
<p>**<br />
gcc 3.3.5<br />
warning: implicit typename is deprecated, please see the documentation for details<br />
**</p>
</blockquote>
<p>Wäre nett, wenn mir jemanden sagen könnte wodurch diese Warnungen ausgelöst werden und wie ich sie wegbekomme :).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/120445/bekomme-warnings-nicht-entfernt</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 07:48:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/120445.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Sep 2005 12:01:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Bekomme warnings nicht entfernt on Tue, 13 Sep 2005 12:01:28 GMT]]></title><description><![CDATA[<p>Unter Linux versuche ich mit dem gcc 3.3.5. eine Templateklasse zu compilieren, mein 7bener Visual Studio compiliert das Ganze selbst auf Warning Level 4 ohne Murren. Der Code wurde ursprünglich mit einem älteren gcc erstellt und sorgt jetzt überall dort, <strong>wo die std::map</strong> verwendet wird, für Warnungen.</p>
<p>Hier ein Beispiel:</p>
<p>Code:</p>
<pre><code class="language-cpp">template &lt;class TKEY, class TDATA&gt;
class Container
{
	public:

		bool entry(const TKEY &amp;key, const TDATA &amp;data)
		{ 	
			pair&lt;map&lt;const TKEY, TDATA, compare&gt;::iterator, bool&gt; P = m_container.insert(pair&lt;TKEY const, TDATA&gt;(key, data));
			return P.second;
		}

		// [...]

private:
	struct compare	
	{
	    bool operator()(const TKEY k1, const TKEY k2) const
		{
		return (k1 &lt; k2);
		}
	};	
        // [...]
};
</code></pre>
<p>Die Fehlermeldungen zu der pair-Zeile:</p>
<blockquote>
<p>**gcc 3.3.5<br />
warning:</p>
<p>`std::map&lt;const TKEY, TDATA, Container&lt;TKEY, TDATA&gt;::compare,<br />
std::allocator&lt;std::pair&lt;const _Key, _Tp&gt; &gt; &gt;::iterator'</p>
<p>is implicitly a typename<br />
**</p>
</blockquote>
<p>Sowie</p>
<blockquote>
<p>**<br />
gcc 3.3.5<br />
warning: implicit typename is deprecated, please see the documentation for details<br />
**</p>
</blockquote>
<p>Wäre nett, wenn mir jemanden sagen könnte wodurch diese Warnungen ausgelöst werden und wie ich sie wegbekomme :).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871018</guid><dc:creator><![CDATA[ThomasSchneider]]></dc:creator><pubDate>Tue, 13 Sep 2005 12:01:28 GMT</pubDate></item><item><title><![CDATA[Reply to Bekomme warnings nicht entfernt on Tue, 13 Sep 2005 12:12:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template &lt;class TKEY, class TDATA&gt;
class Container
{
public:

		bool entry(const TKEY &amp;key, const TDATA &amp;data)
		{ 	
			pair&lt;typename map&lt;const TKEY, TDATA, compare&gt;::iterator, bool&gt; P = m_container.insert(pair&lt;TKEY const, TDATA&gt;(key, data));
			return P.second;
		}
....
</code></pre>
<p>sollte es tun. Grund dafür ist, dass abhängige Namen (Namen die von Templateparametern abhängen) grundsätzlich nicht als Typnamen betrachtet werden. Es sei denn, Du schreibst typename davor (mit Ausnahme eines hier nicht wichtigen Falls).</p>
<p>map&lt;const TKEY, TDATA, compare&gt;::iterator ist so ein Fall. Genaugenommen ist es nicht nur eine Warning, sondern ein Fehler.<br />
Auch wenn der Compiler es letztendlich beim Einsetzen des Template-Codes weiß, dass ein Typname gemeint sein muss, musst Du ihm der Regel nach trotzdem sagen, dass Du auch wirklich einen Typnamen meinst.</p>
<p>Du könntest z.B. map für die beiden Typen so spezialisiert haben, dass map&lt;Key,Data&gt;::iterator plötzlich ein statisches Member oder sonstwas ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/871027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871027</guid><dc:creator><![CDATA[7H3 N4C3R]]></dc:creator><pubDate>Tue, 13 Sep 2005 12:12:02 GMT</pubDate></item><item><title><![CDATA[Reply to Bekomme warnings nicht entfernt on Tue, 13 Sep 2005 12:54:41 GMT]]></title><description><![CDATA[<p>Danke sehr, Problem gelöst <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="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/871087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/871087</guid><dc:creator><![CDATA[ThomasSchneider]]></dc:creator><pubDate>Tue, 13 Sep 2005 12:54:41 GMT</pubDate></item></channel></rss>