<?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[Andrei Alexandrescu - Three Cool Things About ++C]]></title><description><![CDATA[<p><a href="http://www.youtube.com/watch?v=RlVpPstLPEc" rel="nofollow">http://www.youtube.com/watch?v=RlVpPstLPEc</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/271992/andrei-alexandrescu-three-cool-things-about-c</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 03:32:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/271992.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Aug 2010 10:20:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 10:20:40 GMT]]></title><description><![CDATA[<p><a href="http://www.youtube.com/watch?v=RlVpPstLPEc" rel="nofollow">http://www.youtube.com/watch?v=RlVpPstLPEc</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937563</guid><dc:creator><![CDATA[pfffffff]]></dc:creator><pubDate>Sun, 08 Aug 2010 10:20:40 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 11:03:37 GMT]]></title><description><![CDATA[<blockquote>
<p>An­drei Alexan­dres­cu, PhD<br />
Re­search Sci­en­tist, <strong>Face­book</strong>.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Das ist mir jetzt auch neu.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937576</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 08 Aug 2010 11:03:37 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 11:08:07 GMT]]></title><description><![CDATA[<p>Witzig, hat auch Spot in der D Newsgroup gehagelt. <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/1937578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937578</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 08 Aug 2010 11:08:07 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 11:12:31 GMT]]></title><description><![CDATA[<p>Könnte man dies bitte verschieben? D hat nichts im C++ Unterforum zu tun.<br />
==&gt; Der Titel von A.A ist auch &quot;Andrei Alexandrescu - Three Cool Things About D&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937581</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sun, 08 Aug 2010 11:12:31 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 11:14:34 GMT]]></title><description><![CDATA[<p>Zeus schrieb:</p>
<blockquote>
<p>Witzig, hat auch Spot in der D Newsgroup gehagelt. <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>
</blockquote>
<p>Naja. Tun und lassen kann er ja was er will, aber ich frage mich, was er da effektiv tut. Soziale Netzwerke sind ja nicht gerade sein Fachgebiet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937583</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 08 Aug 2010 11:14:34 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 11:50:29 GMT]]></title><description><![CDATA[<p>Sind das nicht die gleichen Hörer im selben Raum:<br />
<a href="http://www.youtube.com/watch?v=F6k8lTrAE2g&amp;feature=channel" rel="nofollow">http://www.youtube.com/watch?v=F6k8lTrAE2g&amp;feature=channel</a> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937602</guid><dc:creator><![CDATA[f.-th.]]></dc:creator><pubDate>Sun, 08 Aug 2010 11:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 11:55:48 GMT]]></title><description><![CDATA[<p>f.-th. schrieb:</p>
<blockquote>
<p>Sind das nicht die gleichen Hörer im selben Raum:<br />
<a href="http://www.youtube.com/watch?v=F6k8lTrAE2g&amp;feature=channel" rel="nofollow">http://www.youtube.com/watch?v=F6k8lTrAE2g&amp;feature=channel</a> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Selber Raum, andere Hörer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937604</guid><dc:creator><![CDATA[nein]]></dc:creator><pubDate>Sun, 08 Aug 2010 11:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 12:34:04 GMT]]></title><description><![CDATA[<p>Wen's interessiert: Die <a href="http://docs.google.com/viewer?url=http://erdani.com/d/three-cool-things-about-d.pdf&amp;pli=1" rel="nofollow">Folien</a> des Vortrags.</p>
<p>drakon schrieb:</p>
<blockquote>
<p>...Soziale Netzwerke sind ja nicht gerade sein Fachgebiet.</p>
</blockquote>
<p>&lt;rethorische_Frage&gt;<br />
Mal böse gefragt: Was ist denn sein Fachgebiet? &quot;Unnütze Informationen&quot;?<br />
(Ich denke da an an das Buch Modern C++ Design) <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="😃"
    /><br />
&lt;/rethorische_Frage&gt;</p>
<p>Ich habe mir den Vortrag auch angesehen, gestern Mittag. Richtig überzeugend war das IMHO nicht. Es gibt immer wieder Dinge, die mich an dem, was er sagt, stören. Um, mal ein Beispiel zu bringen: <code>min</code> . In D sei</p>
<pre><code>auto min(L, R)(L lhs, R rhs) {
  return rhs &lt; lhs ? rhs : lhs;
}
</code></pre>
<p>eine perfekte, vollständige, generische Implementierung von <code>min</code> , wobei hier klar auf Werte-Semantik gesetzt wird. N2199 dagegen versuchte eine Eier legende Wollmichsau zu sein, welche zB Referenzen zurück gibt, falls beide Argumente LValues und Referenz-kompatibel sind und auch noch signed/unsigned-Überraschungen, soweit möglich, umgeht, zB für den Fall min(-1,UINT_MAX). Das ist also eine ganz andere Zielsetzung. Ein &quot;minvalue&quot;, so, wie es A.A. in D geschrieben hat, würde in C++0x so aussehen:</p>
<pre><code class="language-cpp">#include &lt;type_traits&gt;

template&lt;class T, class U&gt;
auto minvalue(T const&amp; t, U const&amp; u) -&gt; std::common_type&lt;T,U&gt;::type
{
  return u&lt;t ? u : t;
}
</code></pre>
<p>Immer noch kurz und knapp genug, wie ich finde. Da muss er sich eigentlich ein anderes Beispiel suchen, um D eine bessere Unterstützung für generische Programmierung attestieren zu können. Möchte man dazu noch unnötiges Kopieren vermeiden, könnte es so aussehen:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
auto minvalue(T &amp;&amp; t, U &amp;&amp; u) -&gt; std::common_type&lt;T,U&gt;::type
{
  if (u&lt;t) return std::forward&lt;U&gt;(u);
  return std::forward&lt;T&gt;(t);
}
</code></pre>
<p>Interessant dagegen fand ich das scope-Schlüsselwort. Das müsste sich aber auch mit C++0x-Mitteln über eine kleine Bibliothek emulieren lassen können.</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937612</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 08 Aug 2010 12:34:04 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 12:44:34 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Wird das so in Video gesagt? Der Algo ist für Werte- als auch Referenz-Semantik zutreffend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937617</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 08 Aug 2010 12:44:34 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 13:21:07 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>drakon schrieb:</p>
<blockquote>
<p>...Soziale Netzwerke sind ja nicht gerade sein Fachgebiet.</p>
</blockquote>
<p>&lt;rethorische_Frage&gt;<br />
Mal böse gefragt: Was ist denn sein Fachgebiet? &quot;Unnütze Informationen&quot;?<br />
(Ich denke da an an das Buch Modern C++ Design) <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="😃"
    /><br />
&lt;/rethorische_Frage&gt;</p>
</blockquote>
<p>Ich weiss jetzt nicht von was seine Doktorarbeit so handelt oder auch sonstige Arbeiten, aber ich denke mal, dass es eher mit Programmiersprachen und deren Entwicklung/Möglichkeiten oder aber auch Bibliotheksentwicklung zu tun hat. Das sagt ja auch seine Mitarbeit bei D über ihn aus.</p>
<p>Hab jetzt doch schnell nachgeschaut:</p>
<blockquote>
<p>An­drei's re­search is in Ma­chine Learn­ing ap­plied to all do­mains of Human Lan­guage tech­nol­o­gy (Nat­u­ral Lan­gauge Pro­cess­ing, Speech Recog­ni­tion, Ma­chine Trans­la­tion).</p>
</blockquote>
<p>Ok. Das kann Facebook sicher irgendwie gebrauchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937629</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 08 Aug 2010 13:21:07 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 13:53:44 GMT]]></title><description><![CDATA[<p>Zeus schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Wird das so in Video gesagt?<br />
Der Algo ist für Werte- als auch Referenz-Semantik zutreffend.</p>
</blockquote>
<p>Naja, es lässt sich eigentlich schlecht vergleichen; denn D macht soweit ich weiß einen großen Unterschied zwischen class und nicht-class (struct, int, double, etc). Klassen-Objecte gibt es nur im Heap und können nur indirekt über Referenzen erreicht werden, die selbst in dem Sinne vollwertige &quot;Objekte&quot; (nach C++ Definition von Objekt) sind, als dass man sie verändern, auf Null setzten/testen kann u.s.w (also eher sich wie Zeiger verhalten, die &quot;Adressen als Werte&quot; haben). Ich wollte darauf hinaus, dass diese Funktion in D zB nicht das hier erlaubt:</p>
<pre><code>int i = 2;
int j = 3;
min(i,j) = 5;
</code></pre>
<p>wobei <em>das</em> aber auch eines der Ziele des N2199 Proposals war, wenn ich das richtig verstanden habe.</p>
<p>Ich bin in D nicht so fit, dass ich behaupten könnte, die struct/class/Zeiger/Referenz-Thematik 100%ig verstanden zu haben.</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937638</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 08 Aug 2010 13:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 14:04:23 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Ich habe mir den Vortrag auch angesehen, gestern Mittag. Richtig überzeugend war das IMHO nicht. Es gibt immer wieder Dinge, die mich an dem, was er sagt, stören. Um, mal ein Beispiel zu bringen: <code>min</code> . In D sei</p>
<pre><code>auto min(L, R)(L lhs, R rhs) {
  return rhs &lt; lhs ? rhs : lhs;
}
</code></pre>
<p>eine perfekte, vollständige, generische Implementierung von <code>min</code> , wobei hier klar auf Werte-Semantik gesetzt wird. N2199 dagegen versuchte eine Eier legende Wollmichsau zu sein, welche zB Referenzen zurück gibt, falls beide Argumente LValues und Referenz-kompatibel sind und auch noch signed/unsigned-Überraschungen, soweit möglich, umgeht, zB für den Fall min(-1,UINT_MAX). Das ist also eine ganz andere Zielsetzung. Ein &quot;minvalue&quot;, so, wie es A.A. in D geschrieben hat, würde in C++0x so aussehen:</p>
<pre><code class="language-cpp">#include &lt;type_traits&gt;

template&lt;class T, class U&gt;
auto minvalue(T const&amp; t, U const&amp; u) -&gt; std::common_type&lt;T,U&gt;::type
{
  return u&lt;t ? u : t;
}
</code></pre>
<p>Immer noch kurz und knapp genug, wie ich finde. Da muss er sich eigentlich ein anderes Beispiel suchen, um D eine bessere Unterstützung für generische Programmierung attestieren zu können. Möchte man dazu noch unnötiges Kopieren vermeiden, könnte es so aussehen:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
auto minvalue(T &amp;&amp; t, U &amp;&amp; u) -&gt; std::common_type&lt;T,U&gt;::type
{
  if (u&lt;t) return std::forward&lt;U&gt;(u);
  return std::forward&lt;T&gt;(t);
}
</code></pre>
<p>Interessant dagegen fand ich das scope-Schlüsselwort. Das müsste sich aber auch mit C++0x-Mitteln über eine kleine Bibliothek emulieren lassen können.</p>
<p>kk</p>
</blockquote>
<p>Wer ist eigentlich auf die Idee gekommen, dass min nicht einfach als retruntyp den der parameter nimmt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937641</guid><dc:creator><![CDATA[hhuuuuuuu??]]></dc:creator><pubDate>Sun, 08 Aug 2010 14:04:23 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 14:14:43 GMT]]></title><description><![CDATA[<p>hhuuuuuuu?? schrieb:</p>
<blockquote>
<p>Wer ist eigentlich auf die Idee gekommen, dass min nicht einfach als retruntyp den der parameter nimmt?</p>
</blockquote>
<p>std::min arbeitet ja auch so. Aber <code>std::min(-2,3u)</code> klappt zB nicht, weil das eine ein signed int, das andere ein unsigned int ist und std::min nur mit einem Typ-Parameter parametrisiert wurde. Die Template-Argument-Deduction wird in diesem Fall fehlschlagen. Wenn man also einen Typ-Mix zulassen will, was bei <code>a&lt;b?a:b</code> ja auch klappt, kann man zwei Typ-Parameter ( <code>T</code> , <code>U</code> ) verwenden und als Return-Typ <code>std::common_type&lt;T,U&gt;::type</code> benutzen. Beispiel: <code>T</code> = <code>int</code> , <code>T</code> = <code>double</code> , <code>common_type&lt;T,U&gt;::type</code> = <code>double</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937651</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 08 Aug 2010 14:14:43 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 14:29:46 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
auto mymin(T &amp;&amp; t, U &amp;&amp; u) -&gt; std::common_type&lt;T,U&gt;::type
{
  if (u&lt;t) return std::forward&lt;U&gt;(u);
  return std::forward&lt;T&gt;(t);
}
</code></pre>
</blockquote>
<p>Ich habe gerade realisiert, dass diese Implementierung viel flexibler ist, als ich eigentlich dachte. Falls beide Argumente LValues waren, kommt auch eine Lvalue-Referenz zurück -- ganz automatisch. Also...</p>
<pre><code class="language-cpp">int i = 2;
int j = 3;
mymin(i,j) = 5;
</code></pre>
<p>klappt auch.</p>
<p>Lediglich mymin(-1,3u) liefert 3 statt -1, was daran liegt, dass -1 zwischendurch zu UINT_MAX konvertiert wird. Wie gesagt, das wollte N2199 auch verhindern und dafür einen long oder long long zurückgeben. Aber man kann's ja auch übertreiben...</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937656</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 08 Aug 2010 14:29:46 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 14:35:18 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>hhuuuuuuu?? schrieb:</p>
<blockquote>
<p>Wer ist eigentlich auf die Idee gekommen, dass min nicht einfach als retruntyp den der parameter nimmt?</p>
</blockquote>
<p>std::min arbeitet ja auch so. Aber <code>std::min(-2,3u)</code> klappt zB nicht, weil das eine ein signed int, das andere ein unsigned int ist und std::min nur mit einem Typ-Parameter parametrisiert wurde. Die Template-Argument-Deduction wird in diesem Fall fehlschlagen. Wenn man also einen Typ-Mix zulassen will, was bei <code>a&lt;b?a:b</code> ja auch klappt, kann man zwei Typ-Parameter ( <code>T</code> , <code>U</code> ) verwenden und als Return-Typ <code>std::common_type&lt;T,U&gt;::type</code> benutzen. Beispiel: <code>T</code> = <code>int</code> , <code>T</code> = <code>double</code> , <code>common_type&lt;T,U&gt;::type</code> = <code>double</code> .</p>
</blockquote>
<p>Wenn man unterschiedliche Typen vergleichen will, kann man ja auch einfach den einen casten. Unsigned/Signed vergleiche geben sowieso eine Compilerwarning.</p>
<p>krümelkacker schrieb:</p>
<blockquote>
<p>Lediglich mymin(-1,3u) liefert 3 statt -1, was daran liegt, dass -1 zwischendurch zu UINT_MAX konvertiert wird. Wie gesagt, das wollte N2199 auch verhindern und dafür einen long oder long long zurückgeben. Aber man kann's ja auch übertreiben...</p>
</blockquote>
<p><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="😃"
    /> Ja, hast du die Warnung jetzt wegoptimiert. <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/1937659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937659</guid><dc:creator><![CDATA[hhuuuuuuu??]]></dc:creator><pubDate>Sun, 08 Aug 2010 14:35:18 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 15:34:48 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Ach ja, schon wieder ein Beleg, warum man D nicht ernsthaft einsetzen sollte.</p>
<pre><code class="language-cpp">import std.stdio;
import std.conv;

auto ref min(L, R)(ref L lhs, ref R rhs) { 
	return rhs &lt; lhs ? rhs : lhs; 
}

void main()
{
	int i = 2;
	int j = 5;

	auto x = min(i, j);

	x = 9;

	writefln(to!(string)(i));	
	writefln(to!(string)(j));
	writefln(to!(string)(x));
}
</code></pre>
<p>Ausgabe:<br />
2<br />
5<br />
9</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937662</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 08 Aug 2010 15:34:48 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 15:06:55 GMT]]></title><description><![CDATA[<p>Zeus schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Ach ja, schon wieder ein Beleg, warum man D nicht ernsthaft einsetzen sollte.</p>
</blockquote>
<p>Es fällt mir schwer zu entscheiden, wie das gemeint sein könnte. War das Ironie?</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937669</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 08 Aug 2010 15:06:55 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 15:13:56 GMT]]></title><description><![CDATA[<p>ich finds net gut das AA fremd geht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937672</guid><dc:creator><![CDATA[mc++d]]></dc:creator><pubDate>Sun, 08 Aug 2010 15:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 15:21:09 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Zeus schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/24868">@krümelkacker</a><br />
Ach ja, schon wieder ein Beleg, warum man D nicht ernsthaft einsetzen sollte.</p>
</blockquote>
<p>Es fällt mir schwer zu entscheiden, wie das gemeint sein könnte. War das Ironie?</p>
</blockquote>
<p>Ich tippe mal auf &quot;Nein, war nicht ironisch.&quot;</p>
<p>Wie gesagt, ich kenne mich mit D nicht aus. Ich würde erwarten, dass man, damit das so klappt, wie Du es haben wolltest, vielleicht statt &quot;auto&quot; einfach &quot;auto ref&quot; sagt -- und zwar bei beiden stellen. Einmal bei der Funktion und einmal für dein x.</p>
<p>Zumindest funktioniert auto so bei C++0x (Die &quot;auto fun() -&gt;&quot; mal ignoriert):</p>
<pre><code class="language-cpp">auto  x = foo(); // x ist nie eine Referenz
auto&amp; x = foo(); // x ist eine Referenz (oder es kompiliert nicht).
</code></pre>
<p>Ich kann mir aber auch vorstellen, dass D das 'ref' nur bei Parameterübergabe zulässt, so wie es auch C# macht (glaub'ich).</p>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937677</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Sun, 08 Aug 2010 15:21:09 GMT</pubDate></item><item><title><![CDATA[Reply to Andrei Alexandrescu - Three Cool Things About ++C on Sun, 08 Aug 2010 15:25:53 GMT]]></title><description><![CDATA[<p>Nein, war nicht ironisch gemeint, hab mir die aktuelle Spec von D2 angesehen und mein Code abgeändert, funktioniert trotzdem nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1937678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1937678</guid><dc:creator><![CDATA[Zeus]]></dc:creator><pubDate>Sun, 08 Aug 2010 15:25:53 GMT</pubDate></item></channel></rss>