<?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[std::swap mit std::auto_ptr]]></title><description><![CDATA[<p>Kann man zwei auto_ptr mit std::swap miteinander vertauschen, oder geht das schief?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/178388/std-swap-mit-std-auto_ptr</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 19:27:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/178388.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Apr 2007 21:15:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::swap mit std::auto_ptr on Tue, 10 Apr 2007 21:15:39 GMT]]></title><description><![CDATA[<p>Kann man zwei auto_ptr mit std::swap miteinander vertauschen, oder geht das schief?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263370</guid><dc:creator><![CDATA[Spieleprogger]]></dc:creator><pubDate>Tue, 10 Apr 2007 21:15:39 GMT</pubDate></item><item><title><![CDATA[Reply to std::swap mit std::auto_ptr on Tue, 10 Apr 2007 22:18:42 GMT]]></title><description><![CDATA[<p>Das ist verboten - es dürfte im allgemeinen allerdings funktionieren. Ist eher unverständlich, warum hier keine Spezialisierung existiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263408</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 10 Apr 2007 22:18:42 GMT</pubDate></item><item><title><![CDATA[Reply to std::swap mit std::auto_ptr on Tue, 10 Apr 2007 22:45:39 GMT]]></title><description><![CDATA[<p>Ich habs mir schon fast gedacht, aber ich hätt nicht gedacht, dass keine Spezialisierung existiert.</p>
<p>Da das tauschen doch recht tricky ist:</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
void swap( std::auto_ptr&lt; T &gt;&amp; lhs, std::auto_ptr&lt; T &gt;&amp; rhs )
{
 T* tmp = lhs.release();
 lhs.reset( rhs.release() );
 rhs.reset( tmp );
}
</code></pre>
<p>wenn man ein release vergisst und ein get nimmt ists schon passiert (ist mir selbst passiert)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263419</guid><dc:creator><![CDATA[Spieleprogger]]></dc:creator><pubDate>Tue, 10 Apr 2007 22:45:39 GMT</pubDate></item><item><title><![CDATA[Reply to std::swap mit std::auto_ptr on Tue, 10 Apr 2007 23:39:56 GMT]]></title><description><![CDATA[<p>Tatsächlich würde ein normaler Dreieckstausch:</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
void swap( T&amp; lhs, T&amp; rhs )
{
 T tmp = lhs;
 lhs = rhs;
 rhs = tmp;
}
</code></pre>
<p>auch für auto_ptr funktionieren. Insofern passiert wahrscheinlich nichts schlimmes, wenn man std::swap anwendet - nur genügt auto_ptr eben eigentlich nicht den Anforderungen, die an die Parameter gestellt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1263426</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1263426</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 10 Apr 2007 23:39:56 GMT</pubDate></item></channel></rss>