<?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 Methode in template Klasse]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein Problem. Ich habe ein template Klasse, welche eine template Methode (eines anderen Types enthält). Da ich die Klasse nicht header-only erstellen wollte, habe ich versucht, eine Spezialisierung in der *.cpp-File anzugeben, allerdings bin ich immer kläglich gescheitert. Es bezieht sich hierbei auf eine Matrix, die den operator * für die Skalar-Multiplikation überladen haben soll. Was ich bisher habe:</p>
<pre><code class="language-cpp">//in *.h
template &lt;typename T&gt;
class Matrix
{
private:
 //...
public:
 //...
template &lt;typename T2&gt;
T2 operator * (T2 &amp; other);
};
</code></pre>
<p>Wenn ich die Definition in die *.h - File packe, dann kompiliert das ganze auch wunderbar, allerdings ist es ein Problem, wenn ich die Definition in die cpp-File stecke, da ich ja in diesem Fall die Datentypen angeben muss (was ich eigentlich auch will) für welche die Methode definiert ist, da diese beim kompilieren erstellt werden können. Was ich in der *.cpp File habe (ich habe keine Ahnung, ob das gültige oder passende Syntax ist, der erste Teil wird zumindest kompiliert):</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
template &lt;typename T2&gt;
T2 Matrix&lt;T&gt;::operator * (T2 &amp; other)
{
  //tu irgendwas
}
</code></pre>
<p>Soweit geht das auch noch, was allerdings jetzt das Problem aus macht sind die expliziten Deklarationen der Methoden, die ich nun benötige. Ich wollte zum Beispiel die Methode nun für int als T2 deklarieren und habe das natürlich in der *.cpp File (in der auch die template-Methode definiert ist), versucht, hat allerdings nicht geklappt:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
</code></pre>
<p>So und noch einige andere Versuche, wie:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; template int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
template &lt;typename T&gt; template&lt;int&gt; int Matrix&lt;T&gt;::operator * (int &amp; other);
</code></pre>
<p>Weiß irgendwer ob das überhaupt so geht, oder bin ich gezwungen, das alles im Header zu halten (was mir persönlich nicht gefallen würde, da ich eben die Spezialisierungen ausschließlich für ein paar Datentypen hätte)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200910/template-methode-in-template-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 17:49:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200910.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Dec 2007 11:31:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template Methode in template Klasse on Fri, 21 Dec 2007 11:31:33 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe ein Problem. Ich habe ein template Klasse, welche eine template Methode (eines anderen Types enthält). Da ich die Klasse nicht header-only erstellen wollte, habe ich versucht, eine Spezialisierung in der *.cpp-File anzugeben, allerdings bin ich immer kläglich gescheitert. Es bezieht sich hierbei auf eine Matrix, die den operator * für die Skalar-Multiplikation überladen haben soll. Was ich bisher habe:</p>
<pre><code class="language-cpp">//in *.h
template &lt;typename T&gt;
class Matrix
{
private:
 //...
public:
 //...
template &lt;typename T2&gt;
T2 operator * (T2 &amp; other);
};
</code></pre>
<p>Wenn ich die Definition in die *.h - File packe, dann kompiliert das ganze auch wunderbar, allerdings ist es ein Problem, wenn ich die Definition in die cpp-File stecke, da ich ja in diesem Fall die Datentypen angeben muss (was ich eigentlich auch will) für welche die Methode definiert ist, da diese beim kompilieren erstellt werden können. Was ich in der *.cpp File habe (ich habe keine Ahnung, ob das gültige oder passende Syntax ist, der erste Teil wird zumindest kompiliert):</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
template &lt;typename T2&gt;
T2 Matrix&lt;T&gt;::operator * (T2 &amp; other)
{
  //tu irgendwas
}
</code></pre>
<p>Soweit geht das auch noch, was allerdings jetzt das Problem aus macht sind die expliziten Deklarationen der Methoden, die ich nun benötige. Ich wollte zum Beispiel die Methode nun für int als T2 deklarieren und habe das natürlich in der *.cpp File (in der auch die template-Methode definiert ist), versucht, hat allerdings nicht geklappt:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
</code></pre>
<p>So und noch einige andere Versuche, wie:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; template int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
template &lt;typename T&gt; template&lt;int&gt; int Matrix&lt;T&gt;::operator * (int &amp; other);
</code></pre>
<p>Weiß irgendwer ob das überhaupt so geht, oder bin ich gezwungen, das alles im Header zu halten (was mir persönlich nicht gefallen würde, da ich eben die Spezialisierungen ausschließlich für ein paar Datentypen hätte)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424345</guid><dc:creator><![CDATA[Vorden]]></dc:creator><pubDate>Fri, 21 Dec 2007 11:31:33 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Fri, 21 Dec 2007 11:34:42 GMT]]></title><description><![CDATA[<p>Erstens: Ja, Templates (abgesehen vielleicht von vollständig spezialisierten Versionen) mußt du in den Header schreiben, sonst bekommst du später PRobleme mit dem Linker.</p>
<p>Zweitens: Ich würde es ja spontan so machen:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; template&lt;&gt; int Matrix&lt;T&gt;::operator * (int &amp; other);
</code></pre>
<p>(bin mir aber nicht 100% sicher, ob das stimmt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424347</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424347</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Dec 2007 11:34:42 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Fri, 21 Dec 2007 11:42:46 GMT]]></title><description><![CDATA[<p>Jo, naja, eigentlich war es schon so von mir gedacht, nur bestimmte Spezialisierungen zuzulassen. Die Syntax, wie du sie gepostet hast, geht so nicht (leider). Jetzt bleiben für mich zwei Möglichkeiten a) warten, suchen, etc oder b) alles in den Header. Hätte gerne eine andere Möglichkeit gefunden (theoretisch sollte das doch gehen oder?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424351</guid><dc:creator><![CDATA[Vorden]]></dc:creator><pubDate>Fri, 21 Dec 2007 11:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Fri, 21 Dec 2007 13:02:23 GMT]]></title><description><![CDATA[<p>Vorden schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template &lt;typename T&gt; int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
</code></pre>
<p>So und noch einige andere Versuche, wie:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; template int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
template &lt;typename T&gt; template&lt;int&gt; int Matrix&lt;T&gt;::operator * (int &amp; other);
</code></pre>
<p>Weiß irgendwer ob das überhaupt so geht, oder bin ich gezwungen, das alles im Header zu halten (was mir persönlich nicht gefallen würde, da ich eben die Spezialisierungen ausschließlich für ein paar Datentypen hätte)</p>
</blockquote>
<p>du kannst eine datei mit template-definitionen erstellen und diese am ende des headers inkludieren, dann hast du's auch getrennt.</p>
<p>was du suchst, nennt sich übrigens funktionsüberladung <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>
<pre><code class="language-cpp">//in der klasse:
template &lt;class T&gt; void foo (T const&amp; other);
void foo (int other);

//definition:
template &lt;class T&gt;
void X&lt;T&gt;::foo (int other)
{
//...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1424404</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424404</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Fri, 21 Dec 2007 13:02:23 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Sat, 22 Dec 2007 01:55:43 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">template &lt;typename T&gt; template&lt;&gt; int Matrix&lt;T&gt;::operator * (int &amp; other);
</code></pre>
</blockquote>
<p>Muss man Spezialisierungen von template member functions in templates nicht sowieso immer in der template Klasse (also implizit inline) definieren?<br />
Anders gesagt: AFAIK geht das garnicht, egal mit welcher Syntax <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1424691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424691</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 22 Dec 2007 01:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Sat, 22 Dec 2007 12:55:39 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>Vorden schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template &lt;typename T&gt; int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
</code></pre>
<p>So und noch einige andere Versuche, wie:</p>
<pre><code class="language-cpp">template &lt;typename T&gt; template int Matrix&lt;T&gt;::operator *&lt;int&gt; (int &amp; other);
template &lt;typename T&gt; template&lt;int&gt; int Matrix&lt;T&gt;::operator * (int &amp; other);
</code></pre>
<p>Weiß irgendwer ob das überhaupt so geht, oder bin ich gezwungen, das alles im Header zu halten (was mir persönlich nicht gefallen würde, da ich eben die Spezialisierungen ausschließlich für ein paar Datentypen hätte)</p>
</blockquote>
<p>du kannst eine datei mit template-definitionen erstellen und diese am ende des headers inkludieren, dann hast du's auch getrennt.</p>
<p>was du suchst, nennt sich übrigens funktionsüberladung <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>
<pre><code class="language-cpp">//in der klasse:
template &lt;class T&gt; void foo (T const&amp; other);
void foo (int other);

//definition:
template &lt;class T&gt;
void X&lt;T&gt;::foo (int other)
{
//...
}
</code></pre>
</blockquote>
<p>erm, dass ich so was wie funktionsüberladung suche, wusste ich schon, aber, wie hustbaer sagte, geht es offensichtlich nicht... ich habe das gefühl, du (queer_boy) hast nicht verstanden, um was es mir ging, scheinbar gehts leider nicht so, wie ich mir das vorgestellt hatte, ich mein, für klassen z.b. kann man ja wunderbar in der *.cpp forward-deklarationen vornehmen in der form:</p>
<pre><code class="language-cpp">template class Matrix&lt;int&gt;;
</code></pre>
<p>das ist eigentlich das, was ich für funktionen gesucht habe, aber scheinbar geht es nicht so unbedingt, dann kommt des halt in den header, da gehts auch, wenn auch nicht exakt so, wie ich das wollte. schade eigentlich, aber thx. falls noch irgendwem was dazu einfällt, bitte einfach posten, ansonsten auch danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424792</guid><dc:creator><![CDATA[Vorden]]></dc:creator><pubDate>Sat, 22 Dec 2007 12:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Sat, 22 Dec 2007 18:05:04 GMT]]></title><description><![CDATA[<blockquote>
<p>erm, dass ich so was wie funktionsüberladung suche, wusste ich schon, aber, wie hustbaer sagte, geht es offensichtlich nicht...</p>
</blockquote>
<p>Nönönö, Überladung != Spezialisierung.</p>
<p>Überladen kannst du schon:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;class T&gt; class foo
{
public:
    // NOTE: hier drinnen heisst foo ohne template klammern automatisch immer foo&lt;T&gt;.
    template &lt;class U&gt; foo operator *(U u); // das template

    template &lt;&gt; foo operator *&lt;double&gt;(double d) // spezialisierung inline (hier geht das, ausserhalb der deklaration von foo nicht)
    {
        std::cout &lt;&lt; &quot;spezialisierung inline\n&quot;;
        return foo();
    }

    foo operator *(int i); // der non-template-overload
};

// definition des templates
template &lt;class T&gt; template &lt;class U&gt; foo&lt;T&gt; foo&lt;T&gt;::operator *(U u)
{
    // ...
    std::cout &lt;&lt; &quot;template ausserhalb\n&quot;;
    return foo&lt;T&gt;();
}

// definition des overloads
template &lt;class T&gt; foo&lt;T&gt; foo&lt;T&gt;::operator *(int i)
{
    // ...
    std::cout &lt;&lt; &quot;overload ausserhalb\n&quot;;
    return foo&lt;T&gt;();
}

int main()
{
    foo&lt;char&gt; f;
    f = f * &quot;sepp&quot;; // template ausserhalb
    f = f * 10.0; // spezialisierung inline
    f = f * 10; // overload ausserhalb

    return 0; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1424897</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424897</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 22 Dec 2007 18:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Sat, 22 Dec 2007 18:38:44 GMT]]></title><description><![CDATA[<blockquote>
<pre><code class="language-cpp">template class Matrix&lt;int&gt;;
</code></pre>
</blockquote>
<p>Eieieiei.<br />
DAS ist keine Spezialisierung sondern eine explizite Instanzierung.<br />
Und DAS geht auch:</p>
<pre><code class="language-cpp">// Mit &quot;foo&quot; aus dem letzten Beispiel:

template foo&lt;int&gt; foo&lt;int&gt;::operator *&lt;short&gt;(short s); // explizite Instanzierung des templates
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1424917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424917</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sat, 22 Dec 2007 18:38:44 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Sat, 22 Dec 2007 21:13:15 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;class T&gt; class foo
{
public:
    // NOTE: hier drinnen heisst foo ohne template klammern automatisch immer foo&lt;T&gt;.
    template &lt;class U&gt; foo operator *(U u); // das template

    template &lt;&gt; foo operator *&lt;double&gt;(double d) // spezialisierung inline (hier geht das, ausserhalb der deklaration von foo nicht)
    {
        std::cout &lt;&lt; &quot;spezialisierung inline\n&quot;;
        return foo();
    }
  [...]
};
</code></pre>
</blockquote>
<p>vielleicht sehe ich tatsächlich nicht genau, worauf der OP hinauswollte. aber wieso sollte das funktionieren? sollte das nicht eigentlich verboten sein? eine explizite spezialisierung (genauer: die deklaration einer expliziten spezialisierung, damit auch die definition) eines member templates kann doch nur im namensbereich der übergeordneten (template oder nicht)-klasse auftreten.</p>
<p>ich habe das gefühl, das hier etwas in der art gesucht wird, wie CStoll schon gemeint hat</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>template &lt;typename T&gt; template&lt;&gt; int Matrix&lt;T&gt;::operator * (int &amp; other);</p>
</blockquote>
<p>auf dein beispiel umgelegt, so etwas: (ich lasse mal zur übersichtlichkeit den code für die überladene funktion weg)</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template &lt;class T&gt; class foo
{
public:
    // NOTE: hier drinnen heisst foo ohne template klammern automatisch immer foo&lt;T&gt;.
    template &lt;class U&gt; foo operator *(U u); // das template

   //folgendes funktioniert nicht dank 14.7.3/2
   /* template &lt;&gt; foo operator *&lt;double&gt;(double d) // spezialisierung inline (hier geht das, ausserhalb der deklaration von foo nicht)
    {
        std::cout &lt;&lt; &quot;spezialisierung inline\n&quot;;
        return foo();
    } */
};

//also muss man die explizitie spezialisierung außerhalb der klasse vornehmen (CStolls Idee)
template &lt;class T&gt;
template &lt;&gt;
foo&lt;T&gt; foo&lt;T&gt;::operator * &lt;double&gt; (double d)
{
}
</code></pre>
<p>nur leider funktioniert das auch nicht, da bei einer expliziten spezialisierung eines member-templates die sie einschließende klasse auch explizit spezialisiert werden muss. also nur so:</p>
<pre><code class="language-cpp">template &lt;&gt;
template &lt;&gt;
foo&lt;int&gt; foo&lt;int&gt;::operator * (int);
</code></pre>
<p>aber ich muss zugeben, dass das nicht ganz mein spezialgebiet ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424960</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 22 Dec 2007 21:13:15 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Sat, 22 Dec 2007 21:49:25 GMT]]></title><description><![CDATA[<p>(PS: quelle) das liegt wahrscheinlich auch an der absolut und überaus einfach verständlichen regel des 14.3.7/18. wie auch immer, was man dagegen tun kann, ist eine funktionsüberladung, wie ich schon gesagt habe.</p>
<p>nach ein bisschen nachforschung scheinen hier verschiedene compiler-hersteller selbst keine einheitliche meinung zu haben. 14.3.7/18 spricht nur von klassentemplates, nicht aber von funktionstemplates. 14.3.7/1 würde die explizite spezialisierung auch erlauben. irgendwo ist da der hund drin...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1424976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1424976</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Sat, 22 Dec 2007 21:49:25 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Sun, 23 Dec 2007 12:52:49 GMT]]></title><description><![CDATA[<p>das ganze mit der überladung war mir vom vornherein auch schon klar, ich wusste aber nicht, ob es eben für diese methodeproblem eine sinnvolle syntax gibt, aber scheinbar nicht. habs jetz mit überladung gelöst, z.b. wenn ich für int und double die methoden bereitstelle (is vllt nicht so schön, geht aber bislang):</p>
<pre><code class="language-cpp">//zum einen:
template &lt;typename T&gt;
class Matrix
{
private:
//...
template &lt;typename T2&gt;
T2 operator * (T2 &amp;other)
{
 //... do the mul
}
//...
public:
int operator * (int &amp;);
double operator * (double &amp;);
//...
};
</code></pre>
<p>und dann in der *.cpp die Methoden definiert also für int und double, die jeweils bloß die andere mit</p>
<pre><code class="language-cpp">return operator *&lt;int&gt;(val);
</code></pre>
<p>aufrufen im Endeffekt.<br />
Is aber jetz auch noch ungetesteter code, weiß net genau, ob des funktioniert, hab leider auch grad meinen compiler hier net zur hand, macht aber, denke ich, sinn der code so</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425159</guid><dc:creator><![CDATA[Vorden]]></dc:creator><pubDate>Sun, 23 Dec 2007 12:52:49 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Tue, 25 Dec 2007 07:41:22 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14600">@queer_boy</a>: hmpf. du hast recht. lustigerweise frisst MSVC 2005 meinen code trotzdem. comeau sudert aber richtigerweise.<br />
irgendwie beginne ich den standard immer mehr und mehr zu hassen. so viele regeln wo ich keinen plan habe wozu sie da sind (und wie man sieht oft nichtmall DASS sie da sind *g*).<br />
C++ is doof, ich mach ab jetzt nurmehr VB <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/1425813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425813</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 25 Dec 2007 07:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Tue, 25 Dec 2007 08:10:35 GMT]]></title><description><![CDATA[<p>queer_boy schrieb:</p>
<blockquote>
<p>(PS: quelle) das liegt wahrscheinlich auch an der absolut und überaus einfach verständlichen regel des 14.3.7/18. wie auch immer, was man dagegen tun kann, ist eine funktionsüberladung, wie ich schon gesagt habe.</p>
<p>nach ein bisschen nachforschung scheinen hier verschiedene compiler-hersteller selbst keine einheitliche meinung zu haben. 14.3.7/18 spricht nur von klassentemplates, nicht aber von funktionstemplates. 14.3.7/1 würde die explizite spezialisierung auch erlauben. irgendwo ist da der hund drin...</p>
</blockquote>
<p>Bei mir gibt es keinen Abschnitt 14.3.7</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1425815</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1425815</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 25 Dec 2007 08:10:35 GMT</pubDate></item><item><title><![CDATA[Reply to template Methode in template Klasse on Wed, 26 Dec 2007 01:33:11 GMT]]></title><description><![CDATA[<p>Er meint 14.7.3. Bei der Antwort an mich hat ers richtig geschrieben, dann hat er sich anscheinend vertan und 7 und 3 vertauscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1426178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1426178</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 26 Dec 2007 01:33:11 GMT</pubDate></item></channel></rss>