<?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[Nutzen von boost::scoped_ptr]]></title><description><![CDATA[<p>Hallo</p>
<p>Wozu ist der Smartpointer <code>boost::scoped_ptr</code> da? Er kann nichts, was <code>std::auto_ptr</code> nicht auch kann. Oder habe ich etwas übersehen?</p>
<p>MfG, EOutOfResources</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285005/nutzen-von-boost-scoped_ptr</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 15:16:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285005.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 12 Apr 2011 17:33:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:33:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wozu ist der Smartpointer <code>boost::scoped_ptr</code> da? Er kann nichts, was <code>std::auto_ptr</code> nicht auch kann. Oder habe ich etwas übersehen?</p>
<p>MfG, EOutOfResources</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048241</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048241</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:33:14 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:34:57 GMT]]></title><description><![CDATA[<p>auto_ptr soll ja angeblich abgeschafft werden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048242</guid><dc:creator><![CDATA[anti_auto_ptr]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:34:57 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:35:15 GMT]]></title><description><![CDATA[<p>anti_auto_ptr schrieb:</p>
<blockquote>
<p>auto_ptr soll ja angeblich abgeschafft werden</p>
</blockquote>
<p>Wo steht das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048243</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:35:15 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:36:36 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Oder habe ich etwas übersehen?</p>
</blockquote>
<p>Ja.<br />
Die Doku zu lesen.<br />
<a href="http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/scoped_ptr.htm" rel="nofollow">http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/scoped_ptr.htm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048247</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:36:36 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:38:21 GMT]]></title><description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Auto_ptr" rel="nofollow">http://en.wikipedia.org/wiki/Auto_ptr</a></p>
<p>Upcoming C++0x standard is due to make auto_ptr deprecated, replacing it with the unique_ptr class template.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048248</guid><dc:creator><![CDATA[anti_auto_ptr]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:38:21 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:49:28 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Die Doku zu lesen.</p>
</blockquote>
<p>Schon gemacht. Und der einzige Unterschied ist, dass <code>boost::scoped_ptr</code> nicht kopierbar ist. <code>std::auto_ptr</code> kann <s>auch nicht kopiert</s> <strong>transferiert</strong> werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048251</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048251</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:43:13 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Die Doku zu lesen.</p>
</blockquote>
<p>Schon gemacht. Und der einzige Unterschied ist, dass <code>boost::scoped_ptr</code> nicht kopierbar ist. <code>std::auto_ptr</code> kann auch nicht kopiert werden.</p>
</blockquote>
<p>Das ist ein Unterschied, ja. Was genau ist die Frage?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048255</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:43:13 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:43:49 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Das ist ein Unterschied, ja. Was genau ist die Frage?</p>
</blockquote>
<p>Was er kann, was <code>std::auto_ptr</code> nicht kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048256</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:45:00 GMT]]></title><description><![CDATA[<p>scoped_ptr kann AFAIK kein owenership transfer, auto_ptr hingegen schon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048257</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:45:00 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:45:44 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Die Doku zu lesen.</p>
</blockquote>
<p>Schon gemacht.</p>
</blockquote>
<p>Nochmal, bitte.</p>
<blockquote>
<p>Und der einzige Unterschied ist, dass <code>boost::scoped_ptr</code> nicht kopierbar ist. <code>std::auto_ptr</code> kann auch nicht kopiert werden.</p>
</blockquote>
<p>Der Unterschied zwischen den beiden ist, dass beide nicht kopiert werden können? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048258</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:46:00 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Oder habe ich etwas übersehen?</p>
</blockquote>
<p>Ja.<br />
Die Doku zu lesen.<br />
<a href="http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/scoped_ptr.htm" rel="nofollow">http://www.boost.org/doc/libs/1_46_1/libs/smart_ptr/scoped_ptr.htm</a></p>
</blockquote>
<p>Auto_Ptr kann den Ownership transferieren, lesen bildet <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048259</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048259</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:46:00 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:47:03 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>scoped_ptr kann AFAIK kein owenership transfer, auto_ptr hingegen schon.</p>
</blockquote>
<p>Habe ich bereits gesagt. Und aus welchem Grund sollte man <code>boost::scoped_ptr</code> statt <code>std::auto_ptr</code> nutzen (ohne dem Argument, dass <code>std::auto_ptr</code> deprecated wird)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048260</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:47:42 GMT]]></title><description><![CDATA[<p>Doch, leider kann er kopiert werden - mit entsprechend unangenehmen Folgen für denjenigen, der es versucht:</p>
<pre><code class="language-cpp">void test(auto_ptr&lt;meine_klasse&gt; ptr)
{
  // macht etwas
} // zerstört 'ptr' und damit das Objekt, auf das er zeigt

void hauptfunktion
{
  auto_ptr&lt;meine_klasse&gt; tgt = new meine_klasse(...);
  // ...
  test(tgt);      // kopiert den auto_ptr -&gt; ptr übernimmt dein Objekt, tgt zeigt auf NULL
  tgt-&gt;machwas(); // BUMM
}
</code></pre>
<p>Mit scoped_ptr wäre dir das nicht passiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048263</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:47:42 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:50:04 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Habe ich bereits gesagt.</p>
</blockquote>
<p>Nein, hast du nicht. Du sagst immer nur die haelfte von dem was du dir denkst. Das funktioniert auf dauer nicht.</p>
<blockquote>
<p>Und aus welchem Grund sollte man <code>boost::scoped_ptr</code> statt <code>std::auto_ptr</code> nutzen (ohne dem Argument, dass <code>std::auto_ptr</code> deprecated wird)?</p>
</blockquote>
<p>Die Frage ist eher:<br />
wer der bei Verstand ist nutzt auto_ptr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048266</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:50:04 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:51:13 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Was er kann, was <code>std::auto_ptr</code> nicht kann.</p>
</blockquote>
<p><code>auto_ptr</code> hat implizite Move-Semantik (im Sinne von C++98). Das ist eine Gefahrenquelle. Steht übrigens genau so auf der Boost-Homepage, bitte lesen. Ausserdem besitzt <code>scoped_ptr</code> ein <code>swap()</code> , ein sicheres <code>operator bool</code> -Äquivalent und einen Destruktor, der vollständige Typen erfordert.</p>
<p>Aber mit <code>std::unique_ptr</code> aus C++0x und dessen expliziter Move-Semantik macht man gleich beide anderen Smart-Pointer überflüssig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048267</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:51:13 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:54:31 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Mit scoped_ptr wäre dir das nicht passiert.</p>
</blockquote>
<p>Achso...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048272</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:54:31 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 17:59:28 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Die Frage ist eher:<br />
wer der bei Verstand ist nutzt auto_ptr?</p>
</blockquote>
<p>Bei <code>auto_ptr</code> in seiner momentanen Implementierung bin ich aufgrund der genannten Punkte mit dir einverstanden, doch für C++98 finde ich die grundsätzliche Idee dahinter gar nicht so schlecht. Ich habe sogar einen ähnlichen Smart-Pointer mit implizitem Move gebaut. Finde ich praktisch, um sicher Ownership zu transferieren (z.B. von einer Factory). Zudem erkennt man die Ownership-Semantik gleich an der Schnittstelle, wohingegen ein roher Zeiger alles bedeuten kann.</p>
<p>Oder was würdest du in solchen Fällen verwenden, wenn dir keine RValue-Referenzen zur Verfügung stehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048276</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Apr 2011 17:59:28 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 18:05:53 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Bei <code>auto_ptr</code> in seiner momentanen Implementierung bin ich aufgrund der genannten Punkte mit dir einverstanden, doch für C++98 finde ich die grundsätzliche Idee dahinter gar nicht so schlecht.</p>
</blockquote>
<p>Du meinst unique_ptr? Der ist super.</p>
<p>auto_ptr ist ja im Prinzip auch eine wahnsinnig gute Idee gewesen. Man ist nur spaeter drauf gekommen dass er technisch falsch implementiert wurde - nur dann lies es sich halt nicht mehr aendern.</p>
<p>Im Prinzip ist ja das einzige Problem der implizite ownership transfer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048283</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 12 Apr 2011 18:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 18:12:57 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Du meinst unique_ptr?</p>
</blockquote>
<p>Nein, ich meinte einen selbstgebastelten C++98-Smart-Pointer mit implizitem Ownership-Transfer, der aber die anderen Unzulänglichkeiten (kein <code>swap()</code> , kein <code>operator SafeBool</code> , keine sichere Zerstörung) behebt. Was würdest du in C++98 für Ownership-Transfer wie bei einer Factory verwenden? <code>shared_ptr</code> hat manchmal unnötigen Overhead, rohe Zeiger sind eine Fehlerquelle und sagen nichts über Ownership aus.</p>
<p>Den Vorteil eines eigenen Smart-Pointers sehe ich darin, dass man ihn <em>wirklich</em> intelligent machen kann. Zum Beispiel überlege ich mir, den dynamischen Typen des Pointees zu merken, und somit aus dem verschiebbaren einen kopierbaren Smart-Pointer zu konstruieren, welcher genügend Typinformationen für eine tiefe Kopie hat. So kann man sicher Zeiger hin- und herschieben und bei Bedarf polymorph kopieren – der dynamische Typ ist komplett wegabstrahiert, und die Klassen kommen ohne <code>Clone()</code> aus. Sag mir, falls du ein Codebeispiel brauchst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048289</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Apr 2011 18:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 18:19:10 GMT]]></title><description><![CDATA[<p>Ich mag impliziten ownership Transfer nicht.</p>
<p>Was wuerdest du das denn fuer sinnvoll erachten?<br />
Bei Factories ist es ja nicht so, dass ich den Ownership Transfer implizit machen muss. Um ehrlich zu sein, bin ich ein Fan von Rohen Zeigern hier - aber ich kann verstehen dass viele Leute hier lieber Smart Pointer sehen.</p>
<p>In dem Fall haette ich ein Objekt aus dem sich ein auto_ptr generieren laesst. Also die Factory liefert keinen auto_ptr sondern eben einen auto_ptr_helper den ich in einen auto_ptr kopieren kann. So habe ich die schoene Semantik fuer die Factory (der user bekommt nichts mit, denn der schreibt ja eh nur auto_ptr&lt;T&gt; p = create(...); ) und dennoch keinen implizite ownership transfer.</p>
<p>Denn um ehrlich zu sein: impliziter Ownership transfer schmeckt mir garnicht... Expliziter ist dagegen aber wieder OK - wenn dir das lieber ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048291</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Tue, 12 Apr 2011 18:19:10 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 18:36:42 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>Denn um ehrlich zu sein: impliziter Ownership transfer schmeckt mir garnicht... Expliziter ist dagegen aber wieder OK - wenn dir das lieber ist.</p>
</blockquote>
<p>Ja, finde ich auch besser. Aber in C++98 gehts halt nicht so wirklich schön. Sowas kann man zwar schon machen:</p>
<pre><code class="language-cpp">NonCopyablePtr a, b;
a = Move(b);
</code></pre>
<p>Aber für Funktionsparameter und -rückgabewerte muss man wieder zu einem anderen, implizit movable Typen greifen (der gleiche wie der, der als Zwischenstation für die Konvertierung im oberen Code genommen wird).</p>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>In dem Fall haette ich ein Objekt aus dem sich ein auto_ptr generieren laesst. Also die Factory liefert keinen auto_ptr sondern eben einen auto_ptr_helper den ich in einen auto_ptr kopieren kann.</p>
</blockquote>
<p>Aber <code>auto_ptr_helper</code> transferiert dann im Prinzip auch den Besitz, oder wie kann ich mir das vorstellen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048297</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Apr 2011 18:36:42 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 18:36:30 GMT]]></title><description><![CDATA[<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Endlich sagt es mal einer. <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>
<p>Bis eben war das in mir ein Kopfchaos, getrieben von<br />
- Extrembeisbielen, wo man es wohl braucht,<br />
- und der Erfahrung, daß ich es doch nie brauche, in der Tat nie, und<br />
- der häufigen Empfehlung in Foren.</p>
<p>Gerade war ich aufnahmefähig, weil ich mich vor Tagen dazu durchgerungen habe, boost::any generell abzulehnen, denn heterogene Container sind nur mit Vererbung sinnvoll, das angegebene Beispiel von Interpretern zieht nicht, weil die die Vererbung doch erst recht lieben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048298</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 12 Apr 2011 18:36:30 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 19:05:35 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Was würdest du in C++98 für Ownership-Transfer wie bei einer Factory verwenden? <code>shared_ptr</code> hat manchmal unnötigen Overhead, rohe Zeiger sind eine Fehlerquelle und sagen nichts über Ownership aus.</p>
</blockquote>
<p>In C++ 98 (03) würde ICH dafür std::auto_ptr verwenden. Ausgenommen Fälle wo es kein Schaden ist gleich boost::shared_ptr zurückzugeben - oft kommt man damit gut aus.<br />
Oder gucken ob boost mittlerweile was unique_ptr-ähnliches anzubieten hat, was auch mit C++ 98 (03) funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048319</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 12 Apr 2011 19:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Tue, 12 Apr 2011 21:15:49 GMT]]></title><description><![CDATA[<p>Okay.</p>
<p>Hast du schon mal was von <a href="http://igaztanaga.drivehq.com/libs/move/doc/html/index.html" rel="nofollow">Boost.Move</a> gehört? Unter anderem soll Move-Semantik für C++98 emuliert werden, das Ganze ist aber (noch?) keine offizielle Boost-Bibliothek. Ich habe gerade gesehen, dass in dem Zusammenhang ebenfalls gewisse Smart-Pointer erwähnt werden, sieht recht interessant aus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>P.S. Boost.Interprocess scheint <code>unique_ptr</code> und <code>move()</code> zu enthalten, aber ich bin mir nicht sicher, ob sie eine Implementierung für C++98 haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048394</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048394</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 12 Apr 2011 21:15:49 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Wed, 13 Apr 2011 09:21:59 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Shade Of Mine schrieb:</p>
<blockquote>
<p>In dem Fall haette ich ein Objekt aus dem sich ein auto_ptr generieren laesst. Also die Factory liefert keinen auto_ptr sondern eben einen auto_ptr_helper den ich in einen auto_ptr kopieren kann.</p>
</blockquote>
<p>Aber <code>auto_ptr_helper</code> transferiert dann im Prinzip auch den Besitz, oder wie kann ich mir das vorstellen?</p>
</blockquote>
<p>Die Idee ist folgende. Das ist nicht nur auf Smartpointer hier reduziert sondern ein Idiom dass immer mal wieder vorkommt. Leider kenne ich keinen Namen dafür.</p>
<p>Ein smartpointer ist nicht kopierbar und kann den ownership nicht transferieren. Jetzt erstellen wir ein Objekt, dass sich selbst zerstört - wie wir eben aus mojo oder (vermutlich ist boost.Move nichts viel anderes als ein modernes mojo) kennen: wir können mit diesem Hilfsobjekt einen echten smartpointer erstellen. Sobald wir das machen stirbt das Objekt. Wir moven es also quasi in den smartpointer.</p>
<p>Der Vorteil ist der: in der Factory selber brauchen wir die Smartpointer fähigkeit ja nicht. Wir wollen nur den smartpointer nach aussen geben. Wir wollen aber nicht kopieren, sondern moven. Dieses helper-Objekt erlaubt uns das. Ich habe mich nicht viel mit c++0x befasst, uU ist das ganze mit einem<br />
return std::move(autoPtr);<br />
in der Factory Methode schon getan.</p>
<p>Jedenfalls ist das Hauptproblem wie man den ownership transfer eliminieren kann und dennoch vernünftige Interfaces anbieten kann.</p>
<p>Aber erzähl mal was dein smartpointer so genau macht. Prinzipiell bin ich immer für speziellösungen zu begeistern und du hast oft super Ideen. Also erzähl mal was du so hast <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048550</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 13 Apr 2011 09:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to Nutzen von boost::scoped_ptr on Wed, 13 Apr 2011 09:42:27 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Hast du schon mal was von <a href="http://igaztanaga.drivehq.com/libs/move/doc/html/index.html" rel="nofollow">Boost.Move</a> gehört? Unter anderem soll Move-Semantik für C++98 emuliert werden</p>
</blockquote>
<p>Lol, jetzt werden sie aber kindisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2048563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2048563</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Wed, 13 Apr 2011 09:42:27 GMT</pubDate></item></channel></rss>