<?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[Schon wieder Probleme mit Templates -.-]]></title><description><![CDATA[<p>die dinger mögen mich nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Diesesmal weiß ich aber nicht, ob es an mir oder am veralteten Compiler liegt</p>
<p>folgendes Konstrukt:</p>
<pre><code class="language-cpp">class MyClass
{
public:
    template&lt;class T&gt;
        inline std::map&lt;int, T&gt; getMap() const;

private:
    std::map&lt;int, Enum1&gt; _enum1_map;
    std::map&lt;int, Enum2&gt; _enum2_map;
};

template&lt;&gt;
inline std::map&lt;int, Enum1&gt; MyClass::getMap() const
{
    return _enum1_map;
}

template&lt;&gt;
inline std::map&lt;int, Enum2&gt; MyClass::getMap() const
{
    return _enum2_map;
}

...
</code></pre>
<p>kurzum: welche Member zurückgegeben wird, entscheidet das Template.</p>
<p>unter gcc 4.3.2 kompiliert es brav durch</p>
<p>unter SUN C++ 5.8 kommt folgender Fehler:</p>
<pre><code>Error: Could not find a match for MyClass::getMap&lt;MyClass::T&gt;() const.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/247518/schon-wieder-probleme-mit-templates</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 13:52:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247518.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 12 Aug 2009 07:56:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schon wieder Probleme mit Templates -.- on Wed, 12 Aug 2009 07:56:46 GMT]]></title><description><![CDATA[<p>die dinger mögen mich nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Diesesmal weiß ich aber nicht, ob es an mir oder am veralteten Compiler liegt</p>
<p>folgendes Konstrukt:</p>
<pre><code class="language-cpp">class MyClass
{
public:
    template&lt;class T&gt;
        inline std::map&lt;int, T&gt; getMap() const;

private:
    std::map&lt;int, Enum1&gt; _enum1_map;
    std::map&lt;int, Enum2&gt; _enum2_map;
};

template&lt;&gt;
inline std::map&lt;int, Enum1&gt; MyClass::getMap() const
{
    return _enum1_map;
}

template&lt;&gt;
inline std::map&lt;int, Enum2&gt; MyClass::getMap() const
{
    return _enum2_map;
}

...
</code></pre>
<p>kurzum: welche Member zurückgegeben wird, entscheidet das Template.</p>
<p>unter gcc 4.3.2 kompiliert es brav durch</p>
<p>unter SUN C++ 5.8 kommt folgender Fehler:</p>
<pre><code>Error: Could not find a match for MyClass::getMap&lt;MyClass::T&gt;() const.
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1759222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759222</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Wed, 12 Aug 2009 07:56:46 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Probleme mit Templates -.- on Wed, 12 Aug 2009 08:27:24 GMT]]></title><description><![CDATA[<p>Und in welcher Zeile kommt der Fehler? <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>Ad veralteter Compiler: Der C++-Compiler von SIEMENS z.B. kommt nicht mit Funktionstemplates klar, wenn die Templateparameter nicht in der Liste der Funktionsparameter benutzt werden.</p>
<p>EDIT:<br />
Müsste die Spezialisierung nicht so lauten? (Kenne mich mit Funktionstemplatespezialisierungen nicht so aus, weil ich sie meide wie der Teufel das Weihwasser <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>
<pre><code class="language-cpp">template&lt;&gt; 
std::map&lt; int, Enum1 &gt; MyClass::getMap&lt; Enum1 &gt;() const
</code></pre>
<p>Warum nimmst Du keine Überladungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759231</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 12 Aug 2009 08:27:24 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Probleme mit Templates -.- on Wed, 12 Aug 2009 08:24:17 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>Und in welcher Zeile kommt der Fehler? <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>
</blockquote>
<p>im obigen Beispiel Zeile 13</p>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>Ad veralteter Compiler: Der C++-Compiler von SIEMENS z.B. kommt nicht mit Funktionstemplates klar, wenn die Templateparameter nicht in der Liste der Funktionsparameter benutzt werden.</p>
</blockquote>
<p>sieht gut aus, kompiliert bisher brav durch. Schonmal danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759236</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Wed, 12 Aug 2009 08:24:17 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Probleme mit Templates -.- on Wed, 12 Aug 2009 08:30:57 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>EDIT:<br />
Müsste die Spezialisierung nicht so lauten? (Kenne mich mit Funktionstemplatespezialisierungen nicht so aus, weil ich sie meide wie der Teufel das Weihwasser <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>
<pre><code class="language-cpp">template&lt;&gt; 
std::map&lt; int, Enum1 &gt; MyClass::getMap&lt; Enum1 &gt;() const
</code></pre>
</blockquote>
<p>klappt beides, also nehm ich erstmal das, was kürzer ist <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="😉"
    /></p>
<blockquote>
<p>Warum nimmst Du keine Überladungen?</p>
</blockquote>
<p>Das hätte ich gemacht, wenn der Compiler es nicht geschluckt hätte. Ich wollt einfach mal sehen, ob das so klappt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759240</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Wed, 12 Aug 2009 08:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to Schon wieder Probleme mit Templates -.- on Wed, 12 Aug 2009 08:54:41 GMT]]></title><description><![CDATA[<p>zwutz schrieb:</p>
<blockquote>
<p>Das hätte ich gemacht, wenn der Compiler es nicht geschluckt hätte. Ich wollt einfach mal sehen, ob das so klappt</p>
</blockquote>
<p>Ich muss anfügen, dass der Hinweis sowieso quatsch war, da man Funktionen ja garnicht nur anhand ihres Rückgabetyps überladen kann. Das funzt sowieso nur, wenn der Templateparameter auch Funktionsparameter ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1759265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1759265</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 12 Aug 2009 08:54:41 GMT</pubDate></item></channel></rss>