<?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[[Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot;]]></title><description><![CDATA[<p>Den Video-Link findet ihr auf dieser Seite:<br />
<a href="http://www.reddit.com/r/cpp/comments/kirs4/writing_modern_c_code_how_c_has_evolved_over_the/" rel="nofollow">http://www.reddit.com/r/cpp/comments/kirs4/writing_modern_c_code_how_c_has_evolved_over_the/</a></p>
<p>Das Publikum ist ein Mischmasch von Programmierern mit unterschiedlichen Backgrounds (C++, C#, Java, JavaScript).</p>
<p>Ich find' den Vortrag gut, weil er genau das rüberbringt, was viele Umsteiger (von X zu C++) oder Anfänger wissen sollten - nämlich: wie gutes, modernes C++ aussieht. Da geht es um &quot;Value Types&quot; vs &quot;Reference Types&quot;, scope-based life-time, Ausnahmesicherheit, C++11 Neuheiten (sofern sie von Microsoft schon unterstützt werden), etc.</p>
<p>Ein paar Fehler tauchen zwar hier und da auf den Folien auf...</p>
<pre><code class="language-cpp">vector&lt;unique_ptr&lt;dings&gt;&gt; nodes;
...
nodes.push_back(new dings);
</code></pre>
<p>darf nicht kompilieren, da unique_ptr's Konstruktor explicit ist. Oder:</p>
<pre><code class="language-cpp">class circle : shape {...
</code></pre>
<p>Hier hat er &quot;public&quot; vergessen.</p>
<p>...aber so schlimm ist das jetzt nicht. Sind halt eher Flüchtigkeitsfehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/292795/video-englisch-herb-sutter-netter-vortrag-zum-thema-quot-modernes-c-quot</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 14:13:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/292795.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 18 Sep 2011 08:48:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 08:55:10 GMT]]></title><description><![CDATA[<p>Den Video-Link findet ihr auf dieser Seite:<br />
<a href="http://www.reddit.com/r/cpp/comments/kirs4/writing_modern_c_code_how_c_has_evolved_over_the/" rel="nofollow">http://www.reddit.com/r/cpp/comments/kirs4/writing_modern_c_code_how_c_has_evolved_over_the/</a></p>
<p>Das Publikum ist ein Mischmasch von Programmierern mit unterschiedlichen Backgrounds (C++, C#, Java, JavaScript).</p>
<p>Ich find' den Vortrag gut, weil er genau das rüberbringt, was viele Umsteiger (von X zu C++) oder Anfänger wissen sollten - nämlich: wie gutes, modernes C++ aussieht. Da geht es um &quot;Value Types&quot; vs &quot;Reference Types&quot;, scope-based life-time, Ausnahmesicherheit, C++11 Neuheiten (sofern sie von Microsoft schon unterstützt werden), etc.</p>
<p>Ein paar Fehler tauchen zwar hier und da auf den Folien auf...</p>
<pre><code class="language-cpp">vector&lt;unique_ptr&lt;dings&gt;&gt; nodes;
...
nodes.push_back(new dings);
</code></pre>
<p>darf nicht kompilieren, da unique_ptr's Konstruktor explicit ist. Oder:</p>
<pre><code class="language-cpp">class circle : shape {...
</code></pre>
<p>Hier hat er &quot;public&quot; vergessen.</p>
<p>...aber so schlimm ist das jetzt nicht. Sind halt eher Flüchtigkeitsfehler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120709</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 18 Sep 2011 08:55:10 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 09:33:55 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Oder:</p>
<pre><code class="language-cpp">class circle : shape {...
</code></pre>
<p>Hier hat er &quot;public&quot; vergessen.</p>
</blockquote>
<p>Das war evtl C++/CLI.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120715</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 18 Sep 2011 09:33:55 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 09:58:37 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>Oder:</p>
<pre><code class="language-cpp">class circle : shape {...
</code></pre>
<p>Hier hat er &quot;public&quot; vergessen.</p>
</blockquote>
<p>Das war evtl C++/CLI.</p>
</blockquote>
<p>Nein, es geht zu 99% um C++. Am Ende sieht man etwas C++/Cx und WinRT.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120720</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 18 Sep 2011 09:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 11:02:25 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Den Video-Link findet ihr auf dieser Seite:<br />
<a href="http://www.reddit.com/r/cpp/comments/kirs4/writing_modern_c_code_how_c_has_evolved_over_the/" rel="nofollow">http://www.reddit.com/r/cpp/comments/kirs4/writing_modern_c_code_how_c_has_evolved_over_the/</a></p>
</blockquote>
<p>Oder gleich hier:<br />
<a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T" rel="nofollow">http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T</a></p>
<p>Danke für die Erinnerung. Hab darauf gewartet, dass das Video hochgeladen wird. Werde es mir wahrscheinlich heute dann ansehen, sofern ich Zeit finde <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>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120734</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120734</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 18 Sep 2011 11:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 13:00:58 GMT]]></title><description><![CDATA[<p>Seid ihr Eigentlich auch so feindlich gegenüber der Entscheidung von MS, per Spracherweiterung das &quot;neue&quot; COM mit in die Programmiersprache zu bauen? Die Jungs in der Kommentarliste auf der build-Seite waren da ja sehr militant irgendwie.</p>
<p>C++ fehlt ja an sich eine gute Anbindung nach außen (außer der C-Variante, die Herb da so schön zusammenfasst) und man ist dann so oder so auf plattformabhängige Wege angewiesen. Da freue ich mich doch, wenn ein solch einfacher Weg angeboten wird, mit der Plattformwelt zu kommunizieren. Schade natürlich, dass WinRT nur in der Metro-Umgebung vorhanden ist, zumindest meine ich gelesen zu haben, dass man es nicht in der Desktopumgebung benutzen kann.</p>
<p>Was meint ihr dazu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120790</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Sep 2011 13:00:58 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 13:38:23 GMT]]></title><description><![CDATA[<p>Windows 8 wird auf Desktoprechner floppen, evtl ist die Orientierung auf Tablets nicht zu übersehen, aber eine Desktop, wo die Startleiste nur 4 Befehle kennt und ein Explorer der eher auch Poweruser glücklich machen soll - Microsoft's Aussage. Zu Widersprüchlich. Endlich mit C# native Programme zu bekommen, aber nur für Metro. Hmpf. Im Detail sehr spannend, aber zusammengesetzt reißt es nicht vom Hocker.</p>
<p>Nachtrag: ops thema verfehlt, sollte doch mehr um C++ drehen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120807</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 18 Sep 2011 13:38:23 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:00:28 GMT]]></title><description><![CDATA[<p>Interessantes Video...</p>
<p>Es zeigt mir, dass mein C++, das ich schreibe schon ziemlich modern ist <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>
<p>Nur eine Aussage von Herb Sutter gefällt mir überhaupt nicht:</p>
<p>Herb Sutter schrieb:</p>
<blockquote>
<p>instead of new, prefer make_shared as your default allocator</p>
</blockquote>
<p>Ein so teurer Pointer als default?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120818</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:04:06 GMT]]></title><description><![CDATA[<p>Na ich weiß nicht, ob das wirklich eine so schlechte Aussage ist (falls da nicht auch irgendein Kontext gegeben war). Zu welchem Zweck hast du denn in deinem sauberen und modernen C++ Quelltext in letzter Zeit Objekte auf dem Heap alloziert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120819</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120819</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:04:06 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:06:21 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>C++ fehlt ja an sich eine gute Anbindung nach außen (außer der C-Variante, die Herb da so schön zusammenfasst) und man ist dann so oder so auf plattformabhängige Wege angewiesen. Da freue ich mich doch, wenn ein solch einfacher Weg angeboten wird, mit der Plattformwelt zu kommunizieren. Schade natürlich, dass WinRT nur in der Metro-Umgebung vorhanden ist, zumindest meine ich gelesen zu haben, dass man es nicht in der Desktopumgebung benutzen kann.</p>
</blockquote>
<p>Ist zwar ein wenig im falschen Thread, siehe:<br />
<a href="http://www.c-plusplus.net/forum/292706" rel="nofollow">http://www.c-plusplus.net/forum/292706</a></p>
<p>Aber gebe jetzt trotzdem hier eine Antwort. Ich hab bis anhin wenig über WinRT gelesen und habe nun angefangen mich damit zu beschäftigen. Sicher ist es grundsätzlich toll, da es eine eher angenehme OO Schnittstelle anbietet. Aber eine Anbindung über eine C Schnittstelle, konntest du auf Linux, Mac, jeglichem Windows, usw. verwenden. Es gibt auch noch mehr Anbindungsmöglichkeiten, welche Herb Sutter nicht gezeigt hat und plattformunabhängig sein können (z.B. über TCP/IP Protokolle). WinRT geht nur auf Win8 und nur für Metro. Ich sehe daher aktuell C++/CX nur als Schnittstellensprache, um eine C++ Bibliothek im Metro UI zu benutzen. Grundsätzlich ähnlich wie C++/CLI, was man nur benutzt, wenn man eine C++ Bibliothek in .Net benutzen möchte.<br />
Der Nutzen davon erscheint mir daher sehr fragwürdig zu sein. Vor allem wenn man den Metro Bereich zu .Net (also C++/CLI) vergleicht, dann ist Metro ein verdammt kleiner eingeschränkter Bereich. Der Einsatzzweck von C++/CX sehe ich im Bereich des Desktops grundsätzlich fast gar nicht. Bei mobilen Geräten mit Win8 dagegen könnte es durchaus interessant werden. Aber das ist schlussendlich aktuell eher ein Nischenbereich.</p>
<p>Man muss sehen, was die Zukunft bringt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120821</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:09:50 GMT]]></title><description><![CDATA[<p>Hab jetzt auch das Video geschaut. Es ist eine wirklich gute Präsentation, welche man ruhig gewissen Leuten zeigen sollte. Am meisten gefreut hat mich die Aussage: &quot;Wir wollten variadic templates für VS11 bringen, haben es aber leider nur nicht ganz geschafft, da es ein wenig mehr Arbeit war, als wir erwartet hatten. Wir sind allerdings fast soweit und werden es liefern und das nicht erst in 2-4 Jahren.&quot;<br />
Mit dem Service Pack? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
<p>Das Zitat (31:00) von Stroustrup über Garbage Collection und C++, kannte ich noch nicht. Aber sehr witzig <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>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120824</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:23:24 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>Nur eine Aussage von Herb Sutter gefällt mir überhaupt nicht:</p>
<p>Herb Sutter schrieb:</p>
<blockquote>
<p>instead of new, prefer make_shared as your default allocator</p>
</blockquote>
<p>Ein so teurer Pointer als default?<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
</blockquote>
<p>Hast Du das mal ausprobiert? Bzw: Was lässt Dich glauben, dass make_shared langsamer als new ist?</p>
<p>Ich find's schade, dass es kein make_unique gibt. Dann hätte man sich neben &quot;delete&quot; auch &quot;new&quot; komplett sparen können in 99,9% aller Fälle. Außerdem hätte es Vorteile bzgl Ausnahmesicherheit.</p>
<pre><code class="language-cpp">void func(unique_ptr&lt;foo&gt;, unique_ptr&lt;bar&gt;) {}

int main() {
  func(unique_ptr&lt;foo&gt;(new foo), unique_ptr&lt;bar&gt;(new bar));
}
</code></pre>
<p>ist <em>nicht</em> Ausnahmesicher. Falls der foo- oder der bar-Konstruktor eine Ausnahme schmeißt, könnte das hier in einem Speicherleck enden. Die Reihenfolge der Auswertung ist ja nicht festgelegt. Bevor überhaupt irgendein unique_ptr existiert, kann schon ein Objekt erzeugt worden sein und beim zweiten eine Ausnahme fliegen. Mit make_unique würde das dann sicher sein:</p>
<pre><code class="language-cpp">void func(unique_ptr&lt;foo&gt;, unique_ptr&lt;bar&gt;) {}

int main() {
  func(make_unique&lt;foo&gt;(), make_unique&lt;bar&gt;());
}
</code></pre>
<p>da die make_unique-Funktion den rohen Zeiger sofort einem unique_ptr übergeben würde...</p>
<p>Ich glaube, das mit der Garbage Collection steht schon in D&amp;E drin (The Design and Evolution of C++). Kann mich aber irren. Bin nur grad' zu faul, nachzugucken. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120827</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:23:24 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:42:40 GMT]]></title><description><![CDATA[<p>Decimad schrieb:</p>
<blockquote>
<p>Na ich weiß nicht, ob das wirklich eine so schlechte Aussage ist (falls da nicht auch irgendein Kontext gegeben war). Zu welchem Zweck hast du denn in deinem sauberen und modernen C++ Quelltext in letzter Zeit Objekte auf dem Heap alloziert?</p>
</blockquote>
<p>Also generell sind Objekte, die ich auf dem Heap alloziere an irgendein Objekt gebunden. In der Regel programmiere ich mit Hilfe von boost-Libraries und da gibt es z. B. den boost::ptr_vector, der die Objekte wieder freigibt.<br />
Kurzzeitig weise ich sie einem unique_ptr zu, dessen Objekt ich dann an den Vektor gebe.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;boost/ptr_container/ptr_vector.hpp&gt;

struct Foo{
	Foo(int i){}
	~Foo(){ std::cout &lt;&lt; &quot;delete&quot; &lt;&lt; std::endl;}
};

struct Bar{
	boost::ptr_vector&lt;Foo&gt; vector;
	void add(std::unique_ptr&lt;Foo&gt;&amp;&amp; obj){
		Foo* foo = obj.get();
		vector.push_back(foo);
		obj.release();
	}
};

int main(){
	Bar bar;
	std::unique_ptr&lt;Foo&gt; ptr(new Foo(4));
	bar.add(std::move(ptr));
}
</code></pre>
<p>Solange der Zugriff ausschließlich durch einen Thread geschieht und der Besitz an einem Objekt hängt, sehe ich keine Nötigkeit zu shared_ptr...</p>
<p>Oben sollte man beachten, dass</p>
<pre><code class="language-cpp">vector.push_back(obj.release());
</code></pre>
<p>nicht threadsicher wäre...</p>
<p>Aber auch ohne boost, würde ich in der Regel ein</p>
<pre><code class="language-cpp">std::vector&lt;std::unique_ptr&lt;Foo&gt; &gt; vec;
	vec.push_back(std::move(std::unique_ptr&lt;Foo&gt;(new Foo(0))));
</code></pre>
<p>bevorzugen...</p>
<p>Klar ist es etwas mehr Arbeit, aber das ist mir lieber als so teuere Pointer...<br />
Natürlich gibt es Situationen, wo Reference-Couting sinnvoll ist, aber es ist in meinen Augen bei weitem kein Default.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120839</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:46:44 GMT]]></title><description><![CDATA[<p>Du sprichst hier Fälle an, bei denen die Zeiger &quot;wegabstrahiert&quot; werden nach außen, zu welchen Herb explizit sagt, dass man da alles rauskitzeln kann und direkt mit Zeigern arbeiten kann (oder unique_ptr, oder irgendwas.</p>
<p>Nochmal: Wofür allozierst du in deinem Quelltext Objekte auf dem Heap? (Nicht wie, denn mit make_shared werden sie ja auch gebunden, wie in deinen Beispielen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120842</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:50:34 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vec.push_back(std::move(std::unique_ptr&lt;Foo&gt;(new Foo(0))));
</code></pre>
</blockquote>
<p>Vermeide überflüssige std::move-Aufrufe und bau Dir zwecks Ausnahmesicherheit ein make_unique. <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="😉"
    /> (siehe Deinen anderen Thread)</p>
<pre><code class="language-cpp">template&lt;class T, class...Args&gt;
inline unique_ptr&lt;T&gt; make_unique(Args&amp;&amp;...args) {
  return unique_ptr&lt;T&gt;(new T(std::forward&lt;Args&gt;(args)...);
}
</code></pre>
<p>Ich wüsste jetzt nicht, warum make_shared langsamer sein sollte als dieses make_unique.</p>
<p>Der Vorteil von unique_ptr ist aber, dass er ein release() anbietet. <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/2120844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120844</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:50:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:54:12 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vec.push_back(std::move(std::unique_ptr&lt;Foo&gt;(new Foo(0))));
</code></pre>
</blockquote>
<p>Hier kannst du das move sowieso weglassen, wir habens hier ja schon mit einem RValue zu tun <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>
<p>Was shared_ptr angeht: Sehe ich so wie XSpille. Ich habe shared_ptr erst 1-2 mal gebraucht. In allen anderen Fällen hat mir unique_ptr gereicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120845</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:54:12 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:54:48 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void func(unique_ptr&lt;foo&gt;, unique_ptr&lt;bar&gt;) {}

int main() {
  func(unique_ptr&lt;foo&gt;(new foo), unique_ptr&lt;bar&gt;(new bar));
}
</code></pre>
<p>ist <em>nicht</em> Ausnahmesicher.</p>
</blockquote>
<p>Danke für den Hinweis! Generell wußte ich es, hätte es aber nicht beachtet ^^<br />
Aber in der Regel, speichere ich solche Objekte vor dem Funktionsaufruf in Variablen, so dass es exceptionsicher ist. Naja... Oder im Forum mal in kurzer Form wie im Post oben <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="🙄"
    /> Aber ist ja nur ein Parameter <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>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>Was lässt Dich glauben, dass make_shared langsamer als new ist?</p>
</blockquote>
<p>Ich glaube nicht, dass es bei der Erzeugung (merkbar - eine zusätzliche 0 Zuweisung(?) und Mutex-Initialisierung(?)) langsamer ist, aber wenn man sich das Objekt aus dem Vektor holt und es zuweist, dann wird der Mutex zu erhöhen des Zählers gelöscht (oder sehe ich etwas falsch). Wenn man nur mit der Referenz auf den shared_ptr arbeitet, macht er ja nicht wirklich Sinn, oder? Und gerade in C++0x/C++11-Zeiten mit <code>auto</code> hat man so einen unnötigen lock schnell drin.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120847</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:54:48 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:00:07 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>XSpille schrieb:</p>
<blockquote>
<pre><code class="language-cpp">vec.push_back(std::move(std::unique_ptr&lt;Foo&gt;(new Foo(0))));
</code></pre>
</blockquote>
<p>Hier kannst du das move sowieso weglassen, wir habens hier ja schon mit einem RValue zu tun <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>
</blockquote>
<p>Da hast du allerdings Recht...<br />
Da siehst du, dass ich wie ich im Post gerade gesagt habe, normalerweise erst in einer Variable zwischenspeicher... <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>EDIT: Ich glaub das std::move ist bezüglich Optimierung sogar schädlich <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120848</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120848</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 14:59:15 GMT]]></title><description><![CDATA[<p>XSpille schrieb:</p>
<blockquote>
<p>Ich glaube nicht, dass es bei der Erzeugung (merkbar - eine zusätzliche 0 Zuweisung(?) und Mutex-Initialisierung(?)) langsamer ist, aber wenn man sich das Objekt aus dem Vektor holt und es zuweist, dann wird der Mutex zu erhöhen des Zählers gelöscht (oder sehe ich etwas falsch). Wenn man nur mit der Referenz auf den shared_ptr arbeitet, macht er ja nicht wirklich Sinn, oder? Und gerade in C++0x/C++11-Zeiten mit <code>auto</code> hat man so einen unnötigen lock schnell drin.</p>
</blockquote>
<p>Da gibt's keinen Mutex. Der Referenzzähler wird eher als &quot;atomic int&quot; implementiert werden. So oder so hinkt der Vergleich auch, da Du unique_ptr nicht kopieren kannst, nur moven. Und bei shared_ptr's move-ctor erwarte ich, dass er genauso effizient sein wird, da hier der Referenzzähler gar nicht angefasst werden muss.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120851</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 18 Sep 2011 14:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:00:38 GMT]]></title><description><![CDATA[<p>Was ich meine ist, dass euer Fokus im Moment total auf Exception-Safety in eurem Implementierungsdetail (Welchen außenstehenden interessiert schon, dass ihr Zeiger in einem vector speichert?) liegt. Zumindest liest es sich für mich im Moment so. (Zu denen Herb sagt: macht was ihr wollt um die volle Geschwindigkeit rauszukitzeln, wenn da unique_ptr und sowas nahe-optimal und automatisch Exception-Safe ist, nur zu!)</p>
<p>Ein anderer Fall wären allerdings geteilte Ressourcen oder solche dynamische Dinge, die tatsächlich die Schnittstellengrenzen überschreiten, bei denen die Lebenszeitverwaltung auch ohne Exceptions eine enorme Problematik darstellen kann. Hier halte ich den Ratschlag mit shared_ptr nicht für so abgrundtief falsch und mit make_shared natürlich bestmöglich umgesetzt.</p>
<p>Damit hat er doch eigentlich alles erschlagen, finde ich. Das Problem war maximal, dass er die Ausnahme (20 Minuten?) vor der Faustregel nannte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120852</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:01:02 GMT]]></title><description><![CDATA[<p>In der MSVC Implementierung wirds über AtomicIncrement und AtomicDecrement gemacht. Gibt dazu auch ein nettes Video, das ich gerade nicht finde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120853</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:01:02 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:03:13 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/34233">@Decimad</a>: <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/2120855</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120855</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:03:13 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:09:09 GMT]]></title><description><![CDATA[<p>Wurde im Beispiel mit dem set&lt;Widget&gt; load_huge_data() nicht sowieso schon immer die Kopie wegoptimiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120857</guid><dc:creator><![CDATA[hmmmmmmmm]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:09:09 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:25:41 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Der Referenzzähler wird eher als &quot;atomic int&quot; implementiert werden.</p>
</blockquote>
<p>Hatte ich nicht in Betracht gezogen... Aber somit hast du aber einen Zugriff der Caching verhindert(, oder?) und minimale Speicherverschwendung.</p>
<p>Herb Sutter schrieb:</p>
<blockquote>
<p>macht was ihr wollt um die volle Geschwindigkeit rauszukitzeln, wenn da unique_ptr und sowas nahe-optimal und automatisch Exception-Safe ist, nur zu!</p>
</blockquote>
<p><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>Ich bin (inzwischen <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="🤡"
    /> ) absoluter Befürworter von unique_ptr.</p>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>So oder so hinkt der Vergleich auch</p>
</blockquote>
<p>Klar kommt es auf die Anforderungen an. Aber in sehr vielen Fällen, benötigt man den Referenzzähler, der wie ich denke deswegen unnötig ist. Beim unique_ptr hat man auch einen leichten Overhead, der sich vermutlich auch manchmal wegoptimieren läßt(?), aber mit dem Bonus der Exceptionsicherheit.</p>
<p>Der shared_ptr hat zweifelsohne auch einen wichtigen Nutzen, jedoch (auch wenn) ich mich wiederhole, in meinen Augen sollte er nicht als 'default' verwendet werden.</p>
<p>EDIT: Für Objekte, die sich von verschiedenen Resourcen geteilt werden, ist für mich ein shared_ptr auch ein absolutes muss <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/2120861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120861</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:30:34 GMT]]></title><description><![CDATA[<p>Ich finde den Link zum Video nicht, wäre jemand so freundlich, ihn mir zu geben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120866</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 15:36:45 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Oder gleich hier:<br />
<a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T" rel="nofollow">http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T</a></p>
</blockquote>
<p>Gerade streikte scheinbar der Server...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120870</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120870</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Sun, 18 Sep 2011 15:36:45 GMT</pubDate></item><item><title><![CDATA[Reply to [Video, Englisch, Herb Sutter]: Netter Vortrag zum Thema &amp;quot;modernes C++&amp;quot; on Sun, 18 Sep 2011 16:21:43 GMT]]></title><description><![CDATA[<p>&quot;that's not the pointer you're looking for&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2120890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2120890</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 18 Sep 2011 16:21:43 GMT</pubDate></item></channel></rss>