<?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[rvalues, lvalues und Zuweisungen]]></title><description><![CDATA[<p>Hallo, ich suche nach einer definitiven Antwort auf folgende Frage.</p>
<pre><code class="language-cpp">struct S { 
 //... 
};

S f() {
  return S();
}

int main() {
  S s;
  f() = s;
}
</code></pre>
<p>Ist das erlaubt?</p>
<p>3.10§5 sagt, f() ist ein rvalue-Ausdruck. 5.17§1 sagt, die linken Ausdrücke in Zuweisungen müssen modifiable lvalues sein. Scheint eindeutig. Andererseits ist die Zuweisung bei nutzerdefinierten Typen eine Memberfunktion, warum soll man die nicht aufrufen dürfen? Solange f() kein <code>const S</code> zurückliefert ... Compiler scheinen das meistens auch so zu sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/213213/rvalues-lvalues-und-zuweisungen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 11:24:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/213213.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 15 May 2008 11:33:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to rvalues, lvalues und Zuweisungen on Thu, 15 May 2008 11:33:57 GMT]]></title><description><![CDATA[<p>Hallo, ich suche nach einer definitiven Antwort auf folgende Frage.</p>
<pre><code class="language-cpp">struct S { 
 //... 
};

S f() {
  return S();
}

int main() {
  S s;
  f() = s;
}
</code></pre>
<p>Ist das erlaubt?</p>
<p>3.10§5 sagt, f() ist ein rvalue-Ausdruck. 5.17§1 sagt, die linken Ausdrücke in Zuweisungen müssen modifiable lvalues sein. Scheint eindeutig. Andererseits ist die Zuweisung bei nutzerdefinierten Typen eine Memberfunktion, warum soll man die nicht aufrufen dürfen? Solange f() kein <code>const S</code> zurückliefert ... Compiler scheinen das meistens auch so zu sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1509549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1509549</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 15 May 2008 11:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to rvalues, lvalues und Zuweisungen on Thu, 15 May 2008 11:46:28 GMT]]></title><description><![CDATA[<p>Jo, geht. f() liefert ein temporäres S Objekt. Für das temporäre S Objekt wird dann der (implizite oder explizite) Zuweisungsoperator aufgerufen. Dann wird das Objekt verworfen.<br />
Mach in Deinem struct mal S&amp; operator=(const S&amp; obj) private. Dann gehts nicht mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1509564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1509564</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 15 May 2008 11:46:28 GMT</pubDate></item><item><title><![CDATA[Reply to rvalues, lvalues und Zuweisungen on Thu, 15 May 2008 11:56:03 GMT]]></title><description><![CDATA[<p>Überladene Operatorfunktionen unterliegen nicht den gleichen Beschränkungen wie die eingebauten Operatoren hinsichtlich der Operanden (13.5/7) - ein lvalue wird nur benötigt, wenn die betreffende Funktionen eine nicht-const Referenz als Parameter hat. Die Zuweisung zwischen Klassenobjekten wird in jedem Falle durch eine überladene Funktion ausgeführt (5.17/4).</p>
<p>Edit: 5/2 Satz 3 ist ein besserer Verweis (13.5/7 meint Semantik nicht Syntax).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1509565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1509565</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 15 May 2008 11:56:03 GMT</pubDate></item><item><title><![CDATA[Reply to rvalues, lvalues und Zuweisungen on Thu, 15 May 2008 11:47:21 GMT]]></title><description><![CDATA[<p>ja, es ist erlaubt.<br />
ich hab im moment keine zeit, die relevanten stellen im standard herauszusuchen, aber 5.17/1 bezieht sich auf built-in operatoren, nicht auf automatisch generierte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1509568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1509568</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 15 May 2008 11:47:21 GMT</pubDate></item><item><title><![CDATA[Reply to rvalues, lvalues und Zuweisungen on Thu, 15 May 2008 11:59:19 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Edit: 5/2 Satz 3 ist ein besserer Verweis (13.5/7 meint Semantik nicht Syntax).</p>
</blockquote>
<p>Ah danke, das ist es. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1509583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1509583</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 15 May 2008 11:59:19 GMT</pubDate></item><item><title><![CDATA[Reply to rvalues, lvalues und Zuweisungen on Thu, 15 May 2008 12:39:59 GMT]]></title><description><![CDATA[<p>huch, hätte ich zuerst nachsehen sollen, ob nicht schon jemand geantwortet hat <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>das ist übrigens auch der grund, warum manche menschen den rückgabewert ihrer operatoren konstant machen wollen. aber fang nicht an, mit camper darüber zu streiten <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/1509666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1509666</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 15 May 2008 12:39:59 GMT</pubDate></item></channel></rss>