<?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[warum klappt return &amp;amp;*it]]></title><description><![CDATA[<p>rudolfi schrieb:</p>
<blockquote>
<p>warum return &amp;*it; ?</p>
</blockquote>
<p>ja, genau. wer garantiert eigentlich, daß die datenobjekte keinen überladenen operator&amp; haben? ims standard wird zwar auch &amp;*it vorgeschlagen, aber ich fühle mich so ungarantiert, wenn ich das benutze.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/158972/warum-klappt-return-amp-it</link><generator>RSS for Node</generator><lastBuildDate>Thu, 10 Sep 2026 06:25:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/158972.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Sep 2006 01:38:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to warum klappt return &amp;amp;*it on Mon, 11 Sep 2006 01:38:04 GMT]]></title><description><![CDATA[<p>rudolfi schrieb:</p>
<blockquote>
<p>warum return &amp;*it; ?</p>
</blockquote>
<p>ja, genau. wer garantiert eigentlich, daß die datenobjekte keinen überladenen operator&amp; haben? ims standard wird zwar auch &amp;*it vorgeschlagen, aber ich fühle mich so ungarantiert, wenn ich das benutze.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1134852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134852</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 Sep 2006 01:38:04 GMT</pubDate></item><item><title><![CDATA[Reply to warum klappt return &amp;amp;*it on Mon, 11 Sep 2006 02:43:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void const* get_value_address() const
    {
        return &amp;*it;
    }
</code></pre>
<p>was hat er hier vor? er dereferenziert den iterator und nimmt die adresse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1134864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134864</guid><dc:creator><![CDATA[rudolfi]]></dc:creator><pubDate>Mon, 11 Sep 2006 02:43:15 GMT</pubDate></item><item><title><![CDATA[Reply to warum klappt return &amp;amp;*it on Mon, 11 Sep 2006 03:25:48 GMT]]></title><description><![CDATA[<p>rudolfi schrieb:</p>
<blockquote>
<p>was hat er hier vor? er dereferenziert den iterator und nimmt die adresse?</p>
</blockquote>
<p>ja, so nimmt er die adresse vom objekt, wo der iterator hinzeigt.</p>
<p>manchmal braucht man eben die echte adresse eines objekts und nicht nur nen iterator. ok, bei std::vector dürfte der iterator eh einfach nur ein zeiger sein, da merkt man keinen unterschied. aber bei ner verketteten liste ist das schon anders, vielleicht sowas</p>
<pre><code class="language-cpp">struct iterator{
   list&lt;T&gt;::node* pos;
...
   iterator&amp; operatror++(){
      pos=pos-&gt;next;
   }
   T&amp; operator*(){
      return pos-&gt;data;
   }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1134867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134867</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 Sep 2006 03:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to warum klappt return &amp;amp;*it on Mon, 11 Sep 2006 03:49:43 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>rudolfi schrieb:</p>
<blockquote>
<p>warum return &amp;*it; ?</p>
</blockquote>
<p>ja, genau. wer garantiert eigentlich, daß die datenobjekte keinen überladenen operator&amp; haben? ims standard wird zwar auch &amp;*it vorgeschlagen, aber ich fühle mich so ungarantiert, wenn ich das benutze.</p>
</blockquote>
<p>soweit es sich um objekte, die mit STL-komponenten benutzt werden, so garantiert das der standard, wenn die betreffende Komponente verlangt, dass das objekt CopyConstructible ist (20.1.3)</p>
<p>die ermittelung der adresse, ohne einen potentiell überladenen &amp;-operator zu benutzen, ist bekanntlich eine recht hässliche angelegenheit:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
T* address(T&amp; x)
{
    return reinterpret_cast&lt; T* &gt;( const_cast&lt; char* &gt;( &amp;reinterpret_cast&lt; const volatile char&amp; &gt;( x ) ) );
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1134868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1134868</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 11 Sep 2006 03:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to warum klappt return &amp;amp;*it on Mon, 11 Sep 2006 11:14:55 GMT]]></title><description><![CDATA[<p>aha. dann werd ich wohl mal bei meinen containern auf die häßliche variante, die ich noch gar nicht kannte, umsteigen.<br />
thx.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135055</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 11 Sep 2006 11:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to warum klappt return &amp;amp;*it on Mon, 11 Sep 2006 11:24:50 GMT]]></title><description><![CDATA[<p>Solltest Du ohnehin boost verwenden: boost/utility.hpp bietet ein addressof() Template dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1135064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1135064</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 11 Sep 2006 11:24:50 GMT</pubDate></item></channel></rss>