<?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[initializer_list]]></title><description><![CDATA[<p>Sehe ich das richtig, dass man mit dem jahrelang durch das Kommitee gewanderten Sprachzusatz &quot;initializer_list&quot; und &quot;aggregate initialization&quot; immer noch kein Array von Objekten initialisieren kann, die nur Konstruktoren haben, die mehr als ein Argument haben, sowie nicht kopierbar sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321859/initializer_list</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 21:47:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321859.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Nov 2013 20:17:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:17:41 GMT]]></title><description><![CDATA[<p>Sehe ich das richtig, dass man mit dem jahrelang durch das Kommitee gewanderten Sprachzusatz &quot;initializer_list&quot; und &quot;aggregate initialization&quot; immer noch kein Array von Objekten initialisieren kann, die nur Konstruktoren haben, die mehr als ein Argument haben, sowie nicht kopierbar sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368209</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:31:19 GMT]]></title><description><![CDATA[<p>Geht, wenn sie moveable sind.<br />
(Musst move Ctor dazu ggf. defaulten)<br />
<a href="http://ideone.com/OzEB3M" rel="nofollow">http://ideone.com/OzEB3M</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368210</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:37:00 GMT]]></title><description><![CDATA[<p>Leider sind sie zwar (optional) movable, aber das moven ist teuer, weil verbundene Entitäten umgebogen werden müssen, daher ist das leider keine Option <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="😞"
    /> Ich hätte sie echt gerne in-place initialisiert <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/2368212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368212</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:37:00 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:46:50 GMT]]></title><description><![CDATA[<blockquote>
<p>moven ist teuer</p>
</blockquote>
<p>Das ist in jedem Fall suboptimal.</p>
<p>Natürlich braucht man theoretisch keinen Move-Ctor</p>
<pre><code>#include &lt;iostream&gt;

class foo
{
public:
	foo(int, int) { std::cout &lt;&lt; &quot;i,i-Ctor\n&quot;; }
	foo(const foo&amp;) = delete;
	foo(foo&amp;&amp;) = delete;
};

int main()
{
	foo arr[]{ {1, 2}, {3, 4} }; // &lt; copy-list-initialization für die Arrayelemente
}
</code></pre>
<p>Allerdings kann das möglicherweise nicht ästhetisch sein.<br />
Und <code>initializer_list</code> hat hier nichts verloren, dass hier ist in der Tat aggregate initialization (und das Aggregat ist natürlich das Array).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368214</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:46:50 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:46:35 GMT]]></title><description><![CDATA[<p>Was wirklich nicht geht sind <code>std::initializer_list</code> s. S. Zeile 11, bzw. Arcoths Posting.</p>
<pre><code class="language-cpp">#include &lt;vector&gt;

struct gadget{
  gadget(int,int){}
  gadget(const gadget&amp;) = delete;
  gadget(gadget&amp;&amp;) = delete;
};

int main(){
  gadget gs[] = {{1,2}, {3,4}, {4,5}};  // passt
  std::vector&lt;gadget&gt; vgs{{1,2}, {3,4}, {4,5}};  // autsch!
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2368217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368217</guid><dc:creator><![CDATA[Furble Wurble]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:46:35 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:49:28 GMT]]></title><description><![CDATA[<p>Was erwartet decimad, wenn er einen Container voll von Objekten haben möchte, die nicht kopierbar und nur ineffizient movebar sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368219</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:49:28 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:49:30 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Aber Nathan, wieso verbreitest du Blödsinn? Natürlich braucht man keinen Move-Ctor</p>
</blockquote>
<p>Nur nebenbei: Verbesserungsvorschläge kann man auch freundlich mitteilen. Du musst ausserdem nicht dauernd mit Worten wie &quot;natürlich&quot; so tun, als wäre jeder ein Idiot, der das nicht auf Anhieb weiss. Ansonsten musst du dich echt nicht wundern, warum du hier dauernd als Klugscheisser angesehen wirst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368220</guid><dc:creator><![CDATA[Anmerker]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:49:30 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:54:30 GMT]]></title><description><![CDATA[<p>Das habe ich natürlich schon vorher rauseditiert, weil mir das selbst klar war. Leider muss natürlich jeder das gleich QFTen. <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>
<blockquote>
<p>Du musst ausserdem nicht dauernd mit Worten wie &quot;natürlich&quot; so tun, als wäre jeder ein Idiot, der das nicht auf Anhieb weiss.</p>
</blockquote>
<p>Das tue ich auch nicht, denn 'natürlich' bedeutet hier, dass es einen direkten und einfachen Weg gibt, das zu erreichen, nicht, dass es jeder kennt.<br />
Edit: Vielleicht sollte ich aufhören, 'natürlich' so zu verwenden... hehe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368221</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:54:30 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 20:58:39 GMT]]></title><description><![CDATA[<p>Zum moven:</p>
<p>Das moven biete ich bei diesen Objekten überhaupt nur an, damit man sie in einem Container speichern kann und ist nur Tradeoff zwischen Faulheit und Effizienz. Es handelt sich um Endpunkte von Datenkanälen und die dürfen im Speicher nunmal nicht hin- und herwandern (es sei denn, man biegt alle Referenzen um, was in diesem Fall zweifellos genau keine sind, aber diese Referenzen zu speichern kostet *trommelwirbel* Speicher).</p>
<p>Zum Thema:</p>
<p>Das Array müsste in einer Initialization-List eines Konstruktors initialisiert werden und der Compiler hat gemäkelt, das für Arrays keine Initializer-List-Syntax-Initialisierung zulässig ist, die &quot;=&quot;-Syntax kommt da ja nicht in Frage, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368224</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 20:58:39 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:01:59 GMT]]></title><description><![CDATA[<blockquote>
<p>der Compiler hat gemäkelt, das für Arrays keine Initializer-List-Syntax-Initialisierung zulässig ist</p>
</blockquote>
<p>... Compiler ist VC++, oder?</p>
<p>Wie wäre es mit Design überdenken? Das sieht alles widersprüchlich aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368225</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:01:59 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:05:36 GMT]]></title><description><![CDATA[<p>VC++ stimmt, den Rest überlese ich jetzt einfach mal <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/2368227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368227</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:05:36 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:08:32 GMT]]></title><description><![CDATA[<p>decimad schrieb:</p>
<blockquote>
<p>VC++ stimmt, den Rest überlese ich jetzt einfach mal <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>Und wie sieht dein Plan aus?</p>
<p><code>std::vector&lt;std::unique_ptr&lt;&gt;&gt;</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368228</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:10:13 GMT]]></title><description><![CDATA[<p>Ich habe jetzt einfach 5 Member statt einem Feld von 5. <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>Wobei mich eines bezüglich Deines vorletzten Kommentars noch interessieren würde: Was genau sieht widersprüchlich aus, viel habe ich ja eigentlich gar nicht preisgegeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368229</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:13:56 GMT]]></title><description><![CDATA[<blockquote>
<p>viel habe ich ja eigentlich gar nicht preisgegeben?</p>
</blockquote>
<p>Nun, du willst Listen von nicht kopierbaren Elementen halten; Und das sie movebar sind, war eigentlich nicht vorgesehen. Also musstest du auf das Array verzichten... hmm.</p>
<blockquote>
<p>Ich habe jetzt einfach 5 Member statt einem Feld von 5.</p>
</blockquote>
<p>Wie oben gezeigt, dürftest du mit einem echten Array keine Schwierigkeiten haben, weil keine Kopien nötig sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368231</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:20:21 GMT]]></title><description><![CDATA[<p>Ja, dass ich per Template-Option anbiete, sie movebar zu machen, ist eigentlich inkonsequent. Aber irgendwie war ich da so im &quot;flow&quot; und es spart an einigen Stellen einige Zeilen Verwaltungs-Code, weil er so zentralisiert ist...<br />
Eigentlich sind die Teile darauf ausgelegt, nicht bewegt zu werden. Der Move-&quot;Hack&quot; ist nur dafür da, dass ich nicht auf unique_ptr oder std::list ausweichen muss (was ich in der Vergangenheit dann auch tat, sogar in diesem Array-Fall, über den ich gerade nochmal drübergehe). Steht denn irgendwo geschrieben, dass Move effizient sein muss? Dachte es geht eher um Semantik, und die wird 1a eingehalten.</p>
<p>Auf das Array verzichten muss ich leider, weil ich die Teile in einem Array nicht initialisiert bekomme, was ja offenbar ein VC++-Problem ist? Ansonsten wäre eigentlich alles in Butter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368233</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:20:21 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:35:11 GMT]]></title><description><![CDATA[<blockquote>
<p>weil ich die Teile in einem Array nicht initialisiert bekomme, was ja offenbar ein VC++-Problem ist?</p>
</blockquote>
<p>Ganz vergessen, habe das glatt übersprungen. Dann bleibt dir wohl nichts anderes übrig. Vielleicht eine Union? <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>
<blockquote>
<p>Steht denn irgendwo geschrieben, dass Move effizient sein muss?</p>
</blockquote>
<p>Nein, vergiss das. Es ging nur darum, dass das Move gezwungenermaßen eingebaut wurde. Nicht weil das ein natürlicher Bestandteil der Klasse war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368237</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:35:11 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 21:49:19 GMT]]></title><description><![CDATA[<p>no harm taken dude, let's carry on <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/2368243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368243</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 21:49:19 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 22:18:07 GMT]]></title><description><![CDATA[<p>zappenduster, eben kam mir die Idee, einfach ein uninitialized_array zu schreiben, aber die Jungs unter <a href="http://en.cppreference.com/w/cpp/types/aligned_storage" rel="nofollow">http://en.cppreference.com/w/cpp/types/aligned_storage</a> hatten es schon fertig <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="😉"
    /> Wollte ich nur für andere mitleidende VC++-Benutzer erwähnt haben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368245</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Tue, 26 Nov 2013 22:18:07 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 22:48:34 GMT]]></title><description><![CDATA[<p><code>boost::optional</code> ginge u.U. auch.<br />
Nimmt einem ab aufzupassen dass man nicht vergisst was freizugeben. Kostet dafür natürlich zusätzlich ein paar Byte + ein paar Zyklen CPU Zeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368250</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 26 Nov 2013 22:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Tue, 26 Nov 2013 23:51:04 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>:<br />
<code>boost::optional</code> ist praktisch einfach ein <code>unique_ptr</code> . Wieso statt <code>unique_ptr optional</code> nehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368256</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 26 Nov 2013 23:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to initializer_list on Wed, 27 Nov 2013 08:59:50 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a>:<br />
<code>boost::optional</code> ist praktisch einfach ein <code>unique_ptr</code> . Wieso statt <code>unique_ptr optional</code> nehmen?</p>
</blockquote>
<p>Ich denke, das ist nicht ganz richtig. Soweit ich weiß ist garantiert, dass das optionale Objekt innerhalb des boost::optional angelegt wird. Hier entfällt also die zusätzliche Indirektion und die dynamische Speicherallokation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2368275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2368275</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Wed, 27 Nov 2013 08:59:50 GMT</pubDate></item></channel></rss>