<?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[Auswertungsreihenfolge]]></title><description><![CDATA[<p>Ohhh, da habe ich noch einen riesigen Bock geschossen.<br />
Ich pushe die konvertierten Argumente eines Funktionsaufrufes aus einem Variadic-Pack auf den Lua-Stack, und zwar folgendermaßen:</p>
<pre><code class="language-cpp">meta::expand_calls_hack((
 specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg)
,0)...);
</code></pre>
<p>Wobei Indices und arg die zusammengehörigen Variadic-Packs sind. Jetzt ist aber wahrscheinlich überhaupt nicht definiert, in welcher Reihenfolge die Aufrufe da getätigt werden und das spüre ich gerade am eigenen Leib: Die Argumente landen falschherum auf dem Stack.<br />
Gibt es irgendeinen verwegenen Trick, ohne wieder auf rekursive Templates auszuweichen, um die Aufrufe in spezifizierter Reihenfolge durchzuführen?<br />
Mir geht das so dermaßen auf den ****, mit C++-Templates Boilerplate-Code zu erzeugen, ich werd' noch verrückt.</p>
<p>Viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320810/auswertungsreihenfolge</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 05:33:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320810.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 13 Oct 2013 14:11:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:11:34 GMT]]></title><description><![CDATA[<p>Ohhh, da habe ich noch einen riesigen Bock geschossen.<br />
Ich pushe die konvertierten Argumente eines Funktionsaufrufes aus einem Variadic-Pack auf den Lua-Stack, und zwar folgendermaßen:</p>
<pre><code class="language-cpp">meta::expand_calls_hack((
 specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg)
,0)...);
</code></pre>
<p>Wobei Indices und arg die zusammengehörigen Variadic-Packs sind. Jetzt ist aber wahrscheinlich überhaupt nicht definiert, in welcher Reihenfolge die Aufrufe da getätigt werden und das spüre ich gerade am eigenen Leib: Die Argumente landen falschherum auf dem Stack.<br />
Gibt es irgendeinen verwegenen Trick, ohne wieder auf rekursive Templates auszuweichen, um die Aufrufe in spezifizierter Reihenfolge durchzuführen?<br />
Mir geht das so dermaßen auf den ****, mit C++-Templates Boilerplate-Code zu erzeugen, ich werd' noch verrückt.</p>
<p>Viele Grüße!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359960</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:11:34 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:17:22 GMT]]></title><description><![CDATA[<blockquote>
<p>Jetzt ist aber wahrscheinlich überhaupt nicht definiert, in welcher Reihenfolge die Aufrufe da getätigt werden und das spüre ich gerade am eigenen Leib: Die Argumente landen falschherum auf dem Stack.</p>
</blockquote>
<p>Ja, das ist richtig. Funktionsargument-Auswertung ist unsequenced. Der GCC macht das AFAIR von Rechts nach Links.<br />
Du musst sie irgendwo hinpacken, wo es definiert ist - beispielsweise eine Initialisierungsliste. Kannst du ein Array erzeugen, welches alle Rückgabewerte enthält? Dann kannst du dieses per <code>indices</code> auch wieder an <code>meta::expand_calls_hack</code> übergeben, Element für Element.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359961</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:17:22 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:24:08 GMT]]></title><description><![CDATA[<p>Hrmmm, leider nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Die Aufrufe sind alle void, geht alles nur in Richtung lua-Stack. Bevor ich jetzt aber anfange, der Sequenzierung halber überall einfach irgendetwas zurückzugeben, weiche ich dann doch lieber auf eine rekursive Formulierung der Sache aus. deci<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Im Prinzip könnten die to_luas auch alle static sein, wollte ich nur kurz anmerken, der Ursprungscode stammt nur nicht von mir und das habe ich noch nicht über den verteilten Quellcode angepasst. Bei dem Code, mit dem ich angefangen habe, hat man nur nicht gesehen, wie schlecht er eigentlich ist, weil er wegen der Template-Magie und mangelnden Variadics einfach zu kompliziert war...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359962</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:24:08 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:33:00 GMT]]></title><description><![CDATA[<p>Und im Moment gewinne ich den Eindruck, dass Variadics einfach nur ein kolossales Fehldesign sind. Die taugen echt nur gut für die eine Sache: Das perfect Forwarding zu anderen C++-Funktionen. Ich frage mich, wie's eine Grammatik-Änderung, die nur in einem Fall überhaupt gut funktioniert, durch den Standardisierungsprozess geschafft hat.<br />
Give me mixins, please!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359964</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:34:01 GMT]]></title><description><![CDATA[<blockquote>
<p>Die Aufrufe sind alle void</p>
</blockquote>
<p>Aber wenn sie keine Rückgabewerte haben, dann nimm doch gleich eine Ausdrucksliste!</p>
<pre><code>bool unused = (specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg)..., false);
</code></pre>
<p>Bei Ausdruckslisten ist es garantiert, das alle Seiteneffekte des linken Ausdrucks vor dem rechten geschehen.</p>
<p>Hätte mir gleich einfallen müssen, ich habe das <code>,0)</code> übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359965</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:34:00 GMT]]></title><description><![CDATA[<p>Oha! *ausprobier*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359966</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:34:00 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:53:41 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>Die Aufrufe sind alle void</p>
</blockquote>
<p>Aber wenn sie keine Rückgabewerte haben, dann nimm doch gleich eine Ausdrucksliste!</p>
<pre><code>bool unused = (specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg)..., false);
</code></pre>
<p>Bei Ausdruckslisten ist es garantiert, das alle Seiteneffekte des linken Ausdrucks vor dem rechten geschehen.</p>
</blockquote>
<p>Seit wann ist das garantiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359970</guid><dc:creator><![CDATA[loooool]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 14:57:02 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>Die Aufrufe sind alle void</p>
</blockquote>
<p>Aber wenn sie keine Rückgabewerte haben, dann nimm doch gleich eine Ausdrucksliste!</p>
<pre><code>bool unused = (specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg)..., false);
</code></pre>
</blockquote>
<p>Das ist keine Ausdrucksliste, sondern bloß ill-formed.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359971</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 13 Oct 2013 14:57:02 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:02:35 GMT]]></title><description><![CDATA[<p>N3337 §5.18/1 schrieb:</p>
<blockquote>
<p>A pair of expressions separated by a comma is evaluated left-to-right [...]. Every value computation and side effect associated with the left expression is sequenced before every value computation and side effect associated with the right expression.</p>
</blockquote>
<p>Das ganze trifft rekursiv auch auf Listen mit mehreren Elementen zu.</p>
<p>camper schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>Die Aufrufe sind alle void</p>
</blockquote>
<p>Aber wenn sie keine Rückgabewerte haben, dann nimm doch gleich eine Ausdrucksliste!</p>
<pre><code>bool unused = (specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg)..., false);
</code></pre>
</blockquote>
<p>Das ist keine Ausdrucksliste, sondern bloß ill-formed.</p>
</blockquote>
<p>Sind denn Pack-Expansions da nicht erlaubt?</p>
<p>In dem Fall geht natürlich auch</p>
<pre><code>bool unused[]{ (specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg), false)... };
</code></pre>
<p>, hier ist dann (dank Initialisierungsliste) auch definiert, dass alles von Links nach Rechts ausgewertet wird.</p>
<p>~Edit: Begriff korrigiert.~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359972</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:02:35 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:03:59 GMT]]></title><description><![CDATA[<p>Ja naja, ich hatte eben schon ein Posting mit den entstehenden Fehlermeldungen vorbereitet, aber das hat sich jetzt wohl erübrigt. So bekomme ich das, auch nach Spielereien mit zusätzlichen Klammern, nicht kompiliert. Die Fehlermeldungen sind aber reichlich nichtssagend in VC++2013.<br />
Ich warte besser kurz ab, was ihr da gerade ausklamüsert? Danke auf jeden Fall schon für die Mühen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359974</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:03:59 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:06:48 GMT]]></title><description><![CDATA[<p>Ja, natürlich, Pack-Expansions sind in so einer Situation nicht erlaubt.</p>
<blockquote>
<p>Ich warte besser kurz ab, was ihr da gerade ausklamüsert?</p>
</blockquote>
<p>Obige Variante mit dem Array wird definitiv funktionieren.</p>
<p>Edit: Es gibt <strong>eine</strong> Ausnahme: Es muss mindestens ein Element geben. Daher ergänze das am Besten zu</p>
<pre><code>bool unused[]{ (specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg), false)..., false };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2359975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359975</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:10:00 GMT]]></title><description><![CDATA[<p>decimad schrieb:</p>
<blockquote>
<p>Ich warte besser kurz ab, was ihr da gerade ausklamüsert?</p>
</blockquote>
<p>Da gibt es nichts zum ausklamüsern, der Sachverhalt ist absolut klar und bekannt. Es gilt halt wie immer, nicht auf Sone zu hören.</p>
<pre><code class="language-cpp">struct variadic_expression {
  template &lt;typename... A&gt;
  variadic_expression(A&amp;&amp;...) {}
};

variadic_expression{ (specialized_converter_policy_n&lt;Indices, Zeug&gt;().to_lua(L,arg), false)..., };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2359977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359977</guid><dc:creator><![CDATA[loooool]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:10:00 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:14:13 GMT]]></title><description><![CDATA[<p>Mit der Array-Variante habe ich auch gerade Probleme, er sagt mir, dass er kein konstantes Array mit Größe 0 erzeugen könnte, was ich jetzt aber so auch nicht ganz nachvollziehen kann, immerhin ist doch dort mindestens ein Element?</p>
<p>@loooool: Aber das ist doch jetzt wieder ein Aufruf eines Konstruktors mit der Eigenschafft, dass die Auswerungsreihenfolge der Argumente nicht spezifiziert ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359980</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:14:13 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:16:26 GMT]]></title><description><![CDATA[<p>Zumindest sieht es für mich gerade so aus, als wäre das genau, was meine expand_calls_hack-Funktion machte. Bringt hier der Einschluss in ein struct überhaupt irgendetwas?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359981</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:16:26 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:18:54 GMT]]></title><description><![CDATA[<p>decimad schrieb:</p>
<blockquote>
<p>@loooool: Aber das ist doch jetzt wieder ein Aufruf eines Konstruktors mit der Eigenschafft, dass die Auswerungsreihenfolge der Argumente nicht spezifiziert ist?</p>
</blockquote>
<p>Wenn der Konstruktor mit {} aufgerufen wird, ist die Auswertungsreihenfolge spezifiziert, sonst nicht. (Find ich total inkonsistent.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359983</guid><dc:creator><![CDATA[loooool]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:24:47 GMT]]></title><description><![CDATA[<blockquote>
<p>Es gilt halt wie immer, nicht auf Sone zu hören.</p>
</blockquote>
<p>Hören wir lieber auf den Typen, der Ausdruckslisten nicht kennt.</p>
<blockquote>
<p>@loooool: Aber das ist doch jetzt wieder ein Aufruf eines Konstruktors mit der Eigenschafft, dass die Auswerungsreihenfolge der Argumente nicht spezifiziert ist?</p>
</blockquote>
<p>Doch, das ist es. Weil man hier Initialisierungslisten (die {}-Syntax) nutzt. Man kann aber auch (aus Versehen?) () verwenden, und es kompiliert durch. Das kann bei Arrays nicht passieren.</p>
<blockquote>
<p>Mit der Array-Variante habe ich auch gerade Probleme, er sagt mir, dass er kein konstantes Array mit Größe 0 erzeugen könnte, was ich jetzt aber so auch nicht ganz nachvollziehen kann, immerhin ist doch dort mindestens ein Element?</p>
</blockquote>
<p>So ist es, es ist völlig richtig.</p>
<pre><code>template&lt;int... i&gt;
void foo()
{
	bool unused[]{ (i, false)..., false };
}

int main()
{
	foo&lt;&gt;();
}
</code></pre>
<p>Ist <a href="https://ideone.com/7b8Utq" rel="nofollow">genauso</a> legal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359984</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:24:47 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:25:48 GMT]]></title><description><![CDATA[<p>Ist Arcoth = Sone? Wurde er gesperrt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359985</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359985</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:25:48 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:29:28 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Ist Arcoth = Sone? Wurde er gesperrt?</p>
</blockquote>
<p>Nein, wieso auch? :p Ich habe nur wegen den Wortwitzen den Account gewechselt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359987</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:29:28 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:31:08 GMT]]></title><description><![CDATA[<p>Tjaja, jetzt hätte ich theoretisch eine Lösung des Problems, aber praktisch muss ich dann wohl doch die Rekursion verwenden. Auch wenn ich VC++ jetzt ganz klar die Schuld dafür gebe, so gebe ich C++ die Schuld dafür, dass man überhaupt solch dämlich kleinkarierten Regeln, die sich in irgendeinem Subparagraphen als Spezialisierung eines anderen Subparagraphen ergeben, ausnutzen muss, um X Aufrufe in Reihenfolge aus einem Variadic-Pack zu generieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359988</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:31:08 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:34:20 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Ist Arcoth = Sone? Wurde er gesperrt?</p>
</blockquote>
<p>Nein, wieso auch? :p Ich habe nur wegen den Wortwitzen den Account gewechselt.</p>
</blockquote>
<p>Marcus kann einen auch umbenennen. Musst nur freundlich fragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359990</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:34:20 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:34:25 GMT]]></title><description><![CDATA[<p>loooool schrieb:</p>
<blockquote>
<p>decimad schrieb:</p>
<blockquote>
<p>@loooool: Aber das ist doch jetzt wieder ein Aufruf eines Konstruktors mit der Eigenschafft, dass die Auswerungsreihenfolge der Argumente nicht spezifiziert ist?</p>
</blockquote>
<p>Wenn der Konstruktor mit {} aufgerufen wird, ist die Auswertungsreihenfolge spezifiziert, sonst nicht. (Find ich total inkonsistent.)</p>
</blockquote>
<p>gcc setzt das allerdings bis jetzt nicht um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359991</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359991</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:34:25 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:41:35 GMT]]></title><description><![CDATA[<blockquote>
<p>Auch wenn ich VC++ jetzt ganz klar die Schuld dafür gebe</p>
</blockquote>
<p>Du versuchst so etwas mit VC++ umzusetzen!?</p>
<blockquote>
<p>gcc setzt das allerdings bis jetzt nicht um.</p>
</blockquote>
<p>Ja, leider, selbst der neueste nicht:</p>
<pre><code>#include &lt;iostream&gt;

struct A
{
	template&lt;typename... Args&gt;
	A(Args&amp;&amp;...){}
};

int main()
{
	int a = 0;
	A{++a, a*=2};
	std::cout &lt;&lt; a;
}
</code></pre>
<p>Sollte eigentlich 2 ausgeben, es gibt jedoch 1 aus. Clang macht es richtig.</p>
<p>out schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Ist Arcoth = Sone? Wurde er gesperrt?</p>
</blockquote>
<p>Nein, wieso auch? :p Ich habe nur wegen den Wortwitzen den Account gewechselt.</p>
</blockquote>
<p>Marcus kann einen auch umbenennen. Musst nur freundlich fragen.</p>
</blockquote>
<p>Hat er ja auch! Vorher war ich der *. Ich wollte nur Sone nicht umbenennen, da das zu viel Verwirrung bezüglich alten Threads gestiftet hätte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359994</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359994</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:41:35 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:48:08 GMT]]></title><description><![CDATA[<p>@loooool: VC++ kompiliert das, aber setzt diese Regel genausowenig um <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359996</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:48:08 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 15:51:36 GMT]]></title><description><![CDATA[<p>Hoffentlich kommt D irgendwann in Schwung, es wird Zeit! Im Moment frickeln sie ja noch an den Allokatoren und anderen grundlegenden Sachen herum, so richtig gesetzt hat sich die Sprache noch nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2359998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2359998</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 15:51:36 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 17:46:44 GMT]]></title><description><![CDATA[<p>Hab mal in der Bug-Database von Microsoft rumgeschaut, die werden das laut deren Aussage im gesamten VS 2013 Produkzyklus nicht ausbessern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360013</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Sun, 13 Oct 2013 17:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to Auswertungsreihenfolge on Sun, 13 Oct 2013 18:26:49 GMT]]></title><description><![CDATA[<p>decimad schrieb:</p>
<blockquote>
<p>Hab mal in der Bug-Database von Microsoft rumgeschaut, die werden das laut deren Aussage im gesamten VS 2013 Produkzyklus nicht ausbessern.</p>
</blockquote>
<p>Und die Variante mit dem Array lässt sich nicht &quot;beheben&quot;? Das false vielleicht an den Anfang setzen? Vielleicht zwei false einfügen?</p>
<p>Tatsächlich ist es aber ein völlig hirnloses Unterfangen, mit VC++ solche Templates zu verwenden. Das ist eine Totgeburt.</p>
<p>Edit²: Gut, ich werde dir nicht direkt Clang empfehlen, aber mindestens einen Compiler-Wechsel schon. Mit VC++ wirst du permanent gebremst werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2360014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2360014</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sun, 13 Oct 2013 18:26:49 GMT</pubDate></item></channel></rss>