<?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[Prioritäten setzten]]></title><description><![CDATA[<p>Hallo,</p>
<p>der Compiler sucht sich immer die am besten passende Funktion heraus. Aber warum bevorzugt der Compiler bitte eine alles akzeptierende Templatefunktion vor einer Funktion, die den Basisklasse des Parameters annimmt?</p>
<pre><code class="language-cpp">struct Base { };

struct Derived : public Base { };

void func(Base) { std::cout &lt;&lt; &quot;Base&quot; &lt;&lt; std::endl; }

template &lt;typename T&gt;
void func(T) { std::cout &lt;&lt; &quot;Template&quot; &lt;&lt; std::endl; }

int main() {
	Derived d;
	func(d);
	return 0;
}
</code></pre>
<p>Folge: Es wird immer &quot;Template&quot; ausgegeben.<br />
Gibt es da einen Workaround?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294522/prioritäten-setzten</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 20:47:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294522.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Oct 2011 15:45:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 15:45:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>der Compiler sucht sich immer die am besten passende Funktion heraus. Aber warum bevorzugt der Compiler bitte eine alles akzeptierende Templatefunktion vor einer Funktion, die den Basisklasse des Parameters annimmt?</p>
<pre><code class="language-cpp">struct Base { };

struct Derived : public Base { };

void func(Base) { std::cout &lt;&lt; &quot;Base&quot; &lt;&lt; std::endl; }

template &lt;typename T&gt;
void func(T) { std::cout &lt;&lt; &quot;Template&quot; &lt;&lt; std::endl; }

int main() {
	Derived d;
	func(d);
	return 0;
}
</code></pre>
<p>Folge: Es wird immer &quot;Template&quot; ausgegeben.<br />
Gibt es da einen Workaround?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136210</guid><dc:creator><![CDATA[OberstePriorität]]></dc:creator><pubDate>Wed, 26 Oct 2011 15:45:22 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 16:00:23 GMT]]></title><description><![CDATA[<p>OberstePriorität schrieb:</p>
<blockquote>
<p>der Compiler sucht sich immer die am besten passende Funktion heraus. Aber warum bevorzugt der Compiler bitte eine alles akzeptierende Templatefunktion vor einer Funktion, die den Basisklasse des Parameters annimmt?</p>
</blockquote>
<p>Weil ganz einfach für die Templatefunktion keine impliziten Konvertierungen (z.B. die in die Basisklasse) nötig sind.</p>
<blockquote>
<p>Gibt es da einen Workaround?</p>
</blockquote>
<p>Diverse. Du kannst explizit die Konvertierung in Base vornehmen. Du kannst im Template selbst eine Verzweigung einbauen, die, falls das Argument von Base abgeleitet ist, func(Base) aufruft. Du kannst mit SFINAE das Template für von Base abgeleitete Typen unbenutzbar machen (std::enable_if, std::is_base_of, bzw. die selben in boost)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136220</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 26 Oct 2011 16:00:23 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 16:49:34 GMT]]></title><description><![CDATA[<p>Okay, da musste mich erstmal ein wenig reindenken, aber es funktioniert astrein, danke <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2136256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136256</guid><dc:creator><![CDATA[OberstePriorität]]></dc:creator><pubDate>Wed, 26 Oct 2011 16:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 17:31:04 GMT]]></title><description><![CDATA[<p>OberstePriorität schrieb:</p>
<blockquote>
<p>Okay, da musste mich erstmal ein wenig reindenken</p>
</blockquote>
<p>Das kann dir keiner abnehmen <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/2136277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136277</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 26 Oct 2011 17:31:04 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 17:50:20 GMT]]></title><description><![CDATA[<p>Was spricht gegen Template-Spezialisierung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136290</guid><dc:creator><![CDATA[easy?!]]></dc:creator><pubDate>Wed, 26 Oct 2011 17:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 17:57:43 GMT]]></title><description><![CDATA[<p>ich glaube eher ihm ging es um die vererbungsbeziehung...</p>
<p>und genau dafür braucht er mindestens ne referenz oder nen pointer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136295</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136295</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 26 Oct 2011 17:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 18:16:22 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>ich glaube eher ihm ging es um die vererbungsbeziehung...</p>
<p>und genau dafür braucht er mindestens ne referenz oder nen pointer</p>
</blockquote>
<p>Eben nicht, wenn man es so macht, wie es pumuckl gesagt hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136306</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Wed, 26 Oct 2011 18:16:22 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 18:49:09 GMT]]></title><description><![CDATA[<p>easy?! schrieb:</p>
<blockquote>
<p>Was spricht gegen Template-Spezialisierung?</p>
</blockquote>
<p>Dass es ein Funktionstemplate ist und man die grundsätzlich eher überladen als spezialisieren sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136330</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 26 Oct 2011 18:49:09 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 19:04:39 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>easy?! schrieb:</p>
<blockquote>
<p>Was spricht gegen Template-Spezialisierung?</p>
</blockquote>
<p>Dass es ein Funktionstemplate ist und man die grundsätzlich eher überladen als spezialisieren sollte.</p>
</blockquote>
<p>Wieso? Was wären die Folgen von Funktionstemplates?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2136339</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136339</guid><dc:creator><![CDATA[really]]></dc:creator><pubDate>Wed, 26 Oct 2011 19:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to Prioritäten setzten on Wed, 26 Oct 2011 20:56:47 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/2136411</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2136411</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 26 Oct 2011 20:56:47 GMT</pubDate></item></channel></rss>