<?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[Überladungen tiefere Prio zuweisen]]></title><description><![CDATA[<p>Wenn ich eine Fkt + eine zusätzliche Überladung habe, wie kann ich dann machen dass sie unterschiedliche Prio haben? Also wenn die erste oder beide Versionen gehen soll der Compiler die erste aufrufen. Und die zweite soll er nur aufrufen wenn nur sie geht.<br />
Ich habe bislang das Problem, dass es einen Fehler gibt wenn beide möglich sind (auch verständlich).</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327649/überladungen-tiefere-prio-zuweisen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Jul 2026 23:53:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327649.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 Aug 2014 09:30:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladungen tiefere Prio zuweisen on Mon, 25 Aug 2014 09:30:52 GMT]]></title><description><![CDATA[<p>Wenn ich eine Fkt + eine zusätzliche Überladung habe, wie kann ich dann machen dass sie unterschiedliche Prio haben? Also wenn die erste oder beide Versionen gehen soll der Compiler die erste aufrufen. Und die zweite soll er nur aufrufen wenn nur sie geht.<br />
Ich habe bislang das Problem, dass es einen Fehler gibt wenn beide möglich sind (auch verständlich).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414820</guid><dc:creator><![CDATA[Ladendieb]]></dc:creator><pubDate>Mon, 25 Aug 2014 09:30:52 GMT</pubDate></item><item><title><![CDATA[Reply to Überladungen tiefere Prio zuweisen on Mon, 25 Aug 2014 10:52:44 GMT]]></title><description><![CDATA[<p>Und welchen Sprachstandard darf man verwenden? C++11?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414829</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 25 Aug 2014 10:52:44 GMT</pubDate></item><item><title><![CDATA[Reply to Überladungen tiefere Prio zuweisen on Mon, 25 Aug 2014 10:54:53 GMT]]></title><description><![CDATA[<p>Wenn's eine Version gibt die mit allen Standards funktioniert, dann vorzugsweise jene.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414830</guid><dc:creator><![CDATA[Ladendieb]]></dc:creator><pubDate>Mon, 25 Aug 2014 10:54:53 GMT</pubDate></item><item><title><![CDATA[Reply to Überladungen tiefere Prio zuweisen on Mon, 25 Aug 2014 11:15:50 GMT]]></title><description><![CDATA[<p>Also erstmal geht das nicht (wie du schon selbst festgestellt hast). Denn Computer mögen sowas wie Nichtdeterminismus überhaupt nicht. Mit Zufall z.B. könnte ein Computer dann arbeiten, aber für einen Menschen wäre es dann auch sehr blöd nachzuvollziehen, wann unter welchen umständen welche Funktion ausgeführt wird.</p>
<p>Aber es gibt da Tricks:<br />
Z.B. kannst du eine Funktion schreiben, die die beiden eigentlich aufzurufenden Funktion einkapselt und mit einem if dann genauere Fallutnerscheidungen amcht und dementsprechend die eine oder andere Funktion aufruft:</p>
<pre><code>void realCall1(int x, int y, int z){}
void realCall2(int x, int y, int z){}

void call(int x, int y, int z)
{
    if ( y &gt; x &amp;&amp; z &gt; y )
        realCall1(x, y, z);
    else
        realCall2(x, y, z);
}

int main()
{
    call(5, 6, 7);
}
</code></pre>
<p>Das geht vor allem zur Laufzeit dnyamisch und nennt sich normalerweise programmieren.</p>
<p>Wenn du zur Compilezeit aber schon unterscheiden willst/musst/kannst/darfst/sollst und auch die entsprechenden Informationen zur Verfügung hast und stellen kannst, dann nimm std::enable_if-Konstrukte (SFINAE).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414836</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414836</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 25 Aug 2014 11:15:50 GMT</pubDate></item><item><title><![CDATA[Reply to Überladungen tiefere Prio zuweisen on Mon, 25 Aug 2014 11:41:18 GMT]]></title><description><![CDATA[<p>Oh da hab ich mich undeutlich ausgedrückt. Was eine if-Verzweigung ist, ist mir schon bewusst. Es geht um das Unterscheiden zur Compilezeit. Ein Beispiel mit dem ich Probleme habe:</p>
<pre><code>template&lt;typename out, typename in&gt;
out fnk(out(*ptr)(in))
{}

template&lt;typename out, typename in&gt;
out fnk(out(*ptr)(in...)...)
{}

int print(const char*...)
{}

void print(const char*)
{}

int main()
{
	fnk(&amp;print);
	fnk(&amp;print, 5);
}
</code></pre>
<p>Beide Zeilen in der main gehen nicht. Die erste würde ich gerne so zum Laufen bringen, dass der Nutzer von fnk nichts angeben muss sodass automatisch die nichtvariadische Überladung von print / fnk ausgewählt wird (die eigentliche Frage). Und wieso die zweite Zeile nicht geht leuchtet mir nicht ein (kann 2x nur die variadische Version gemeint sein).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414839</guid><dc:creator><![CDATA[Ladendieb]]></dc:creator><pubDate>Mon, 25 Aug 2014 11:41:18 GMT</pubDate></item><item><title><![CDATA[Reply to Überladungen tiefere Prio zuweisen on Mon, 25 Aug 2014 12:39:29 GMT]]></title><description><![CDATA[<p>Bitte setzte vor normale Ellipsen ein Komma. Insbesondere in variadischen Templates wird es schwer lesbar, wenn man jedesmal darüber nachdenken muss, ob ein ... eine Packexpansion darstellt oder eine normale Ellipse.<br />
Das eigentliche Problem ist hier auch nicht Überladungsauflösung beim Funktionsaufruf (die Funktionstemplates fnk überschneiden sich ja nicht in Bezug auf die möglichen Funktionsargumente, mit denen sie aufgerufen werden können), sondern die Auswahl der richtigen Überladung bei Anwendung des Adressoperators. Es wäre zweckmäßig, darauf gleich hinzuweisen, weil es nicht die Porblematik ist, die für gewöhnlich mit Überladung als erstes assoziert wird.</p>
<p>Eine Lösung für das Problem existiert vermutlich nicht, weil die Auswahl des Zeigers bei überberladenen Funktionen vom Kontext abhängt (und es gibt keine partzielle Ordnung von Kontexten) und nicht von den Zeigertypen selbst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414843</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 25 Aug 2014 12:39:29 GMT</pubDate></item><item><title><![CDATA[Reply to Überladungen tiefere Prio zuweisen on Mon, 25 Aug 2014 12:56:52 GMT]]></title><description><![CDATA[<blockquote>
<p>Und wieso die zweite Zeile nicht geht leuchtet mir nicht ein (kann 2x nur die variadische Version gemeint sein).</p>
</blockquote>
<p>Die zweite Zeile kompiliert bei mir problemlos (Clang 3.4.2).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2414847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2414847</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 25 Aug 2014 12:56:52 GMT</pubDate></item></channel></rss>