<?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[Argumente weiterleiten]]></title><description><![CDATA[<p>Hallo!<br />
Ich möchte nur kurz zwischenfragen ob ich hier den richtigen Weg einschlage.<br />
Ich habe eine (Template-)Funktion, die einen externen Aufruf tätigt, für den es bei bestimmten Typen keinen Sinn ergibt, nicht-const-Referenzen als Argumente zu übergeben. Damit fällt ja Perfect-Forwarding schonmal aus dem Rennen.<br />
Drum kurz die Zwischenfrage: Es ist gängige und akzeptierte Praxis, in solch einem Fall die Argumente als Wert-Typen anzunehmen, und std::ref bzw. std::cref zu verwenden, falls der aufrufende Code per Referenz übergeben möchte, ja?<br />
Zumindest habe ich das so bei std::bind und verschiedentlichen stl-Algorithmen, die Funktoren akzeptieren, beobachtet.<br />
Möchte nur nicht, dass ich irgendjemanden überrasche, wenn ich das hier jetzt so implementiere.<br />
Die alternative wäre, dass der Client-Code static_cast benutzt, um const-Referenzen zu erwirken.</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320807/argumente-weiterleiten</link><generator>RSS for Node</generator><lastBuildDate>Thu, 23 Jul 2026 20:46:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320807.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Oct 2013 12:57:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Argumente weiterleiten on Sun, 13 Oct 2013 12:57:24 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich möchte nur kurz zwischenfragen ob ich hier den richtigen Weg einschlage.<br />
Ich habe eine (Template-)Funktion, die einen externen Aufruf tätigt, für den es bei bestimmten Typen keinen Sinn ergibt, nicht-const-Referenzen als Argumente zu übergeben. Damit fällt ja Perfect-Forwarding schonmal aus dem Rennen.<br />
Drum kurz die Zwischenfrage: Es ist gängige und akzeptierte Praxis, in solch einem Fall die Argumente als Wert-Typen anzunehmen, und std::ref bzw. std::cref zu verwenden, falls der aufrufende Code per Referenz übergeben möchte, ja?<br />
Zumindest habe ich das so bei std::bind und verschiedentlichen stl-Algorithmen, die Funktoren akzeptieren, beobachtet.<br />
Möchte nur nicht, dass ich irgendjemanden überrasche, wenn ich das hier jetzt so implementiere.<br />
Die alternative wäre, dass der Client-Code static_cast benutzt, um const-Referenzen zu erwirken.</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359942</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359942</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 12:57:24 GMT</pubDate></item><item><title><![CDATA[Reply to Argumente weiterleiten on Sun, 13 Oct 2013 13:16:59 GMT]]></title><description><![CDATA[<p>Du verwechselst da was:<br />
std::bind und so speichern die Argumente und leben potentiell länger als der Scope des Aufrufers. Deshalb darf da kein perfect forwarding geschehen.</p>
<p>In deinem Fall hingegen geschieht forwarding und da erwarte ich perfect forwarding. Wenn es schlimm ist, falls eine r-value übergeben wird (ist zwar unlogisch, weil rvalues an const-ref binden), dann mach ein static_assert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359948</guid><dc:creator><![CDATA[htadfyv]]></dc:creator><pubDate>Sun, 13 Oct 2013 13:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to Argumente weiterleiten on Sun, 13 Oct 2013 13:45:13 GMT]]></title><description><![CDATA[<p>Der Call geht in Lua rein und es gibt Konverter, die direkt auf native Lua-Typen konvertieren, das ist einfach ein Design-Tradeoff. Da Lua keine Referenzen unterstützt, habe ich es für die nativen Typen per static_cast unterbunden, dass diese beim Aufruf sowie bei gebundenen Funktionen als nicht-const-Referenzen in der Signatur auftauchen, weil ich niemals das umsetzen kann, was der C++-Kodierer im ersten Momente erwartet.<br />
Mit allen anderen Typen kann Lua sowieso nichts direkt anfangen (außer halt per Meta-Table), daher ist hier die Übergabe per Referenz wunderbar möglich, Lua dient hier nur als &quot;Mediator&quot;.</p>
<p>Das habe ich gemeint mit &quot;es ergibt keinen Sinn&quot;. So wie es im Moment ist, packt der Aufrufer dort irgendein benanntes nativ-Objekt als Argument hin und ihm fliegt ein static_assert um die Ohren, falls er das Objekt nicht irgendwie so castet, dass beim perfect forwarding eine const-Referenz entsteht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359954</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 13:45:13 GMT</pubDate></item></channel></rss>