<?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[Temporaries und constcorrectness]]></title><description><![CDATA[<p>hallo alle</p>
<p>folgender code:</p>
<pre><code>struct foo { void f() {} };

void f(foo&amp;) { }

int main()
{
	foo().f(); //geht
	f(foo()); //geht nicht
}
</code></pre>
<p>wieso geht die erste version, die das temporary u.u. verändert, aber nicht die zweite, die es auch tut?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327706/temporaries-und-constcorrectness</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 13:32:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327706.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Aug 2014 10:58:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Temporaries und constcorrectness on Fri, 29 Aug 2014 10:58:06 GMT]]></title><description><![CDATA[<p>hallo alle</p>
<p>folgender code:</p>
<pre><code>struct foo { void f() {} };

void f(foo&amp;) { }

int main()
{
	foo().f(); //geht
	f(foo()); //geht nicht
}
</code></pre>
<p>wieso geht die erste version, die das temporary u.u. verändert, aber nicht die zweite, die es auch tut?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415301</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415301</guid><dc:creator><![CDATA[Konstantinopel]]></dc:creator><pubDate>Fri, 29 Aug 2014 10:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Temporaries und constcorrectness on Fri, 29 Aug 2014 11:16:37 GMT]]></title><description><![CDATA[<p>Weil temporaries nicht an non-const references gebunden werden dürfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415303</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 29 Aug 2014 11:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to Temporaries und constcorrectness on Fri, 29 Aug 2014 12:23:43 GMT]]></title><description><![CDATA[<p>und was ist der hintergrund? wieso sollte ich ein objekt verändern dürfen, es jedoch nicht an eine nonconst ref binden dürfen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415311</guid><dc:creator><![CDATA[Konstantinopel]]></dc:creator><pubDate>Fri, 29 Aug 2014 12:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to Temporaries und constcorrectness on Fri, 29 Aug 2014 14:13:48 GMT]]></title><description><![CDATA[<p>Konstantinopel schrieb:</p>
<blockquote>
<p>und was ist der hintergrund? wieso sollte ich ein objekt verändern dürfen, es jedoch nicht an eine nonconst ref binden dürfen?</p>
</blockquote>
<p>Dann machst nicht als temporäre Variable.</p>
<pre><code>foo g;
    f(g);
</code></pre>
<p>Wenn Du g verändern willst, brauchsate doch nach dem Aufruf auch nen Namen, um es anzufassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415331</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Fri, 29 Aug 2014 14:13:48 GMT</pubDate></item><item><title><![CDATA[Reply to Temporaries und constcorrectness on Fri, 29 Aug 2014 14:22:32 GMT]]></title><description><![CDATA[<p>Es geht ihm um den Grund <em>warum</em> man ein temporary nur an eine const reference binden kann ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415333</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415333</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Fri, 29 Aug 2014 14:22:32 GMT</pubDate></item><item><title><![CDATA[Reply to Temporaries und constcorrectness on Fri, 29 Aug 2014 15:00:36 GMT]]></title><description><![CDATA[<p>Es gibt Workarounds:</p>
<pre><code class="language-cpp">struct foo {
  foo&amp; self() { return *this; }
  void f() {}
};

void f(foo&amp;) { }

int main()
{
  foo().f(); //geht                                                             
  f(foo().self()); //geht                                                 
}
</code></pre>
<p>Oder mit einem schönen Pattern:</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
struct self_crtp {
  T&amp; self() { return *static_cast&lt;T*&gt;(this); }
};

struct foo : self_crtp&lt;foo&gt; {
  void f() {}
};

int main()
{
  foo().f(); //geht                                                             
  f(foo().self()); //geht                                                 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2415337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415337</guid><dc:creator><![CDATA[themightyhaxx0r]]></dc:creator><pubDate>Fri, 29 Aug 2014 15:00:36 GMT</pubDate></item><item><title><![CDATA[Reply to Temporaries und constcorrectness on Tue, 02 Sep 2014 20:32:54 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>Es geht ihm um den Grund <em>warum</em> man ein temporary nur an eine const reference binden kann ...</p>
</blockquote>
<p>Stroustrup schrieb:</p>
<blockquote>
<p>That's to protect people from changing the values of temporaries that are destroyed before their new value can be used.</p>
</blockquote>
<p><a href="http://stroustrup.com/C++11FAQ.html#rval" rel="nofollow">http://stroustrup.com/C++11FAQ.html#rval</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2415872</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2415872</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 02 Sep 2014 20:32:54 GMT</pubDate></item></channel></rss>