<?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[Wechselseitig abhängige template functions]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Klasse mit zwei template member functions, die sich gegenseitig aufrufen. Nun möchte ich die beiden template functions spezialisieren. Doch egal welche Reihenfolge ich wähle, ich erhalte den Compiler Fehler 'specialization of &lt;Funktionsname&gt; after instantiation (was ja auch stimmt). Der Code ist etwa folgender:</p>
<pre><code class="language-cpp">class A {
template&lt;typename T&gt;
static T f(T x);

template&lt;typename T&gt;
static T g(T x);
};

template&lt;&gt;
double A::f&lt;double&gt;(double x) {
if (some condition) {
return g(x);
} else
return 1;
}

template&lt;&gt;
double A::g&lt;double&gt;(double x) {
if (some condition) {
return f(x);
} else
return 1;
}
</code></pre>
<p>Wie kann ich das Problem umgehen?</p>
<p>Vielen Dank und viele Grüße,<br />
Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271810/wechselseitig-abhängige-template-functions</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 06:30:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271810.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Aug 2010 09:34:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wechselseitig abhängige template functions on Wed, 04 Aug 2010 09:34:55 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe eine Klasse mit zwei template member functions, die sich gegenseitig aufrufen. Nun möchte ich die beiden template functions spezialisieren. Doch egal welche Reihenfolge ich wähle, ich erhalte den Compiler Fehler 'specialization of &lt;Funktionsname&gt; after instantiation (was ja auch stimmt). Der Code ist etwa folgender:</p>
<pre><code class="language-cpp">class A {
template&lt;typename T&gt;
static T f(T x);

template&lt;typename T&gt;
static T g(T x);
};

template&lt;&gt;
double A::f&lt;double&gt;(double x) {
if (some condition) {
return g(x);
} else
return 1;
}

template&lt;&gt;
double A::g&lt;double&gt;(double x) {
if (some condition) {
return f(x);
} else
return 1;
}
</code></pre>
<p>Wie kann ich das Problem umgehen?</p>
<p>Vielen Dank und viele Grüße,<br />
Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1935992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1935992</guid><dc:creator><![CDATA[peter_h]]></dc:creator><pubDate>Wed, 04 Aug 2010 09:34:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitig abhängige template functions on Wed, 04 Aug 2010 09:48:14 GMT]]></title><description><![CDATA[<p>Wie immer im Falle von Kreuzabhängigkeiten mit einer Vorwärtsdeklaration:</p>
<pre><code class="language-cpp">template&lt;&gt; double A::g&lt;double&gt;(double x);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1936000</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936000</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 04 Aug 2010 09:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitig abhängige template functions on Wed, 04 Aug 2010 09:57:56 GMT]]></title><description><![CDATA[<p>peter_h schrieb:</p>
<blockquote>
<p>Nun möchte ich die beiden template functions spezialisieren.</p>
</blockquote>
<p>Ist das wirklich das, was du willst? In den allermeisten Fällen ist eine überladung mit einer entsprechenden nicht-template-Funktion sinnvoller.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936003</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 04 Aug 2010 09:57:56 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitig abhängige template functions on Wed, 04 Aug 2010 10:57:03 GMT]]></title><description><![CDATA[<p>Danke an SeppJ, das hat funktioniert. War eigentlich naheliegend, aber die genaue Form hatte ich trotzdem nicht allein hinbekommen.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Ist das wirklich das, was du willst? In den allermeisten Fällen ist eine überladung mit einer entsprechenden nicht-template-Funktion sinnvoller.</p>
</blockquote>
<p>Tatsächlich finde ich die Template-Lösung recht nützlich. Was wäre denn der Vorteil wenn man mit nicht-Templates überlädt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936034</guid><dc:creator><![CDATA[peter_h]]></dc:creator><pubDate>Wed, 04 Aug 2010 10:57:03 GMT</pubDate></item><item><title><![CDATA[Reply to Wechselseitig abhängige template functions on Wed, 04 Aug 2010 13:21:25 GMT]]></title><description><![CDATA[<p><a href="http://www.gotw.ca/publications/mill17.htm" rel="nofollow">http://www.gotw.ca/publications/mill17.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1936101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1936101</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Wed, 04 Aug 2010 13:21:25 GMT</pubDate></item></channel></rss>