<?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[Statische konstante Initialisierungsliste in Klasse]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich probiere gerade etwas C++11 aus und habe folgenden Code geschrieben:</p>
<pre><code>class LottozahlenGenerator
{

public:
    Lottozahlengenerator();
    virtual ~LottozahlenGenerator();

private:
static const std::initializer_list&lt;unsigned&gt; init = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,
34,35,36,37,38,39,40,41,42,34,44,45,46,47,48,49};
};
</code></pre>
<p>Der kompiliert nicht mit der Meldung</p>
<pre><code>/home/andreas/projects/Lotto/lottozahlengenerator.h:34:58: error: ‘constexpr’ needed for in-class initialization of static data member ‘const std::initializer_list&lt;unsigned int&gt; LottozahlenGenerator::init’ of non-integral type [-fpermissive]
</code></pre>
<p>Geht das so generell nicht? ist eine initializer_list keine constexpr?</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/316708/statische-konstante-initialisierungsliste-in-klasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 17:15:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/316708.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 May 2013 19:55:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 19:55:38 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich probiere gerade etwas C++11 aus und habe folgenden Code geschrieben:</p>
<pre><code>class LottozahlenGenerator
{

public:
    Lottozahlengenerator();
    virtual ~LottozahlenGenerator();

private:
static const std::initializer_list&lt;unsigned&gt; init = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,
34,35,36,37,38,39,40,41,42,34,44,45,46,47,48,49};
};
</code></pre>
<p>Der kompiliert nicht mit der Meldung</p>
<pre><code>/home/andreas/projects/Lotto/lottozahlengenerator.h:34:58: error: ‘constexpr’ needed for in-class initialization of static data member ‘const std::initializer_list&lt;unsigned int&gt; LottozahlenGenerator::init’ of non-integral type [-fpermissive]
</code></pre>
<p>Geht das so generell nicht? ist eine initializer_list keine constexpr?</p>
<p>Vielen Dank im Voraus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323075</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 13 May 2013 19:55:38 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:09:14 GMT]]></title><description><![CDATA[<p>Die Fehlermeldung sagt doch, was der Fehler ist.<br />
Mache aus dem const ein constexpr und es funzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323080</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 13 May 2013 20:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:11:20 GMT]]></title><description><![CDATA[<p>Die initializer_list aus C++11 ist praktisch immer eine schlechte Idee, nimm lieber <code>static constexpr unsigned init[]</code> . Arrays haben mit C++11 ein Upgrade erfahren, gibt eigentlich keinen Grund mehr, die nicht zu benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323082</guid><dc:creator><![CDATA[nonli]]></dc:creator><pubDate>Mon, 13 May 2013 20:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:16:25 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Die Fehlermeldung sagt doch, was der Fehler ist.<br />
Mache aus dem const ein constexpr und es funzt.</p>
</blockquote>
<p>Danke. Ich hatte die Fehlermeldung so verstanden, dass auf der rechten Seite das constexpr fehlt. Was ist den im Fall einer Variablen überhaupt der Unterschied zwischen constexpr und const?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323085</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 13 May 2013 20:16:25 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:17:39 GMT]]></title><description><![CDATA[<p>nonli schrieb:</p>
<blockquote>
<p>Die initializer_list aus C++11 ist praktisch immer eine schlechte Idee, nimm lieber <code>static constexpr unsigned init[]</code> . Arrays haben mit C++11 ein Upgrade erfahren, gibt eigentlich keinen Grund mehr, die nicht zu benutzen.</p>
</blockquote>
<p>Der Grund ist, dass man mit Arrays nicht so komfortabel einen vector initialisieren kann, oder irre ich mich da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323087</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 13 May 2013 20:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:18:04 GMT]]></title><description><![CDATA[<p>Der Ansatz sieht irre aus (was zum Teufel soll das Array und was willst du damit tun?). Siehe auch meine Signatur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323089</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 13 May 2013 20:18:04 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:24:46 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p>nonli schrieb:</p>
<blockquote>
<p>Die initializer_list aus C++11 ist praktisch immer eine schlechte Idee, nimm lieber <code>static constexpr unsigned init[]</code> . Arrays haben mit C++11 ein Upgrade erfahren, gibt eigentlich keinen Grund mehr, die nicht zu benutzen.</p>
</blockquote>
<p>Der Grund ist, dass man mit Arrays nicht so komfortabel einen vector initialisieren kann, oder irre ich mich da?</p>
</blockquote>
<p>Ja?</p>
<pre><code>std::vector&lt;int&gt; vec( std::begin(arr), std::end(arr) ); /// Edit: Ich bin doof. 's gibt ja std::begin/end...
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2323092</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323092</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 13 May 2013 20:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:22:24 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p>nonli schrieb:</p>
<blockquote>
<p>Die initializer_list aus C++11 ist praktisch immer eine schlechte Idee, nimm lieber <code>static constexpr unsigned init[]</code> . Arrays haben mit C++11 ein Upgrade erfahren, gibt eigentlich keinen Grund mehr, die nicht zu benutzen.</p>
</blockquote>
<p>Der Grund ist, dass man mit Arrays nicht so komfortabel einen vector initialisieren kann, oder irre ich mich da?</p>
</blockquote>
<p>Du irrst <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>
<pre><code class="language-cpp">using std::begin; using std::end;
vector&lt;int&gt; vec(begin(array), end(array));
</code></pre>
<p>Ansonsten kannst du den Vektor auch gleich direkt füllen</p>
<pre><code class="language-cpp">std::vector&lt;unsigned&gt; vec = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,
34,35,36,37,38,39,40,41,42,34,44,45,46,47,48,49};
</code></pre>
<p>bzw.</p>
<pre><code class="language-cpp">std::vector&lt;unsigned&gt; vec(49);
std::iota(begin(vec), end(vec), 1);
</code></pre>
<p>Alles seit C++11.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323093</guid><dc:creator><![CDATA[nonli]]></dc:creator><pubDate>Mon, 13 May 2013 20:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:23:13 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<pre><code>std::vector vec(arr, arr + sizeof(arr) / sizeof(*arr));
</code></pre>
</blockquote>
<p><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/2323095</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323095</guid><dc:creator><![CDATA[nonli]]></dc:creator><pubDate>Mon, 13 May 2013 20:23:13 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:26:28 GMT]]></title><description><![CDATA[<p>nonli schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<pre><code>std::vector vec(arr, arr + sizeof(arr) / sizeof(*arr));
</code></pre>
</blockquote>
<p><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>Jaja ich weiß. Schon editiert. Das war C++98.</p>
<p>Ah shit! Da war ja nicht einmal eine richtige Template-Id! <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="😮"
    /><br />
Well well, shame on me.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323096</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 13 May 2013 20:26:28 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:24:20 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p>nonli schrieb:</p>
<blockquote>
<p>Die initializer_list aus C++11 ist praktisch immer eine schlechte Idee, nimm lieber <code>static constexpr unsigned init[]</code> . Arrays haben mit C++11 ein Upgrade erfahren, gibt eigentlich keinen Grund mehr, die nicht zu benutzen.</p>
</blockquote>
<p>Der Grund ist, dass man mit Arrays nicht so komfortabel einen vector initialisieren kann, oder irre ich mich da?</p>
</blockquote>
<p>Wenn du C++11 verwenden kannst. Wieso solltest du ein std::array in einen std::vector stopfen wollen? Welchen Grund gibt es dafür?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323097</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Mon, 13 May 2013 20:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:25:08 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Der Ansatz sieht irre aus (was zum Teufel soll das Array und was willst du damit tun?). Siehe auch meine Signatur.</p>
</blockquote>
<p>Falls die Frage an mich gerichtet war: Ich möchte eine für alle Instanzen gleiche, konstante Initialisierungsliste erstellen um damit Kontainer mit immer dem selben Inhalt zu initialisieren. Das Ganze ist eher eine theoretische Spielerei die dazu dienen soll C++11 Features anzuwenden. Hat keinen direkten, praktischen Hintergrund.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323098</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323098</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 13 May 2013 20:25:08 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:25:47 GMT]]></title><description><![CDATA[<p>Die Frage ist wieso er so ein Array verwendet. Er braucht es definitiv nicht, da bin ich mir zu 99% sicher.</p>
<p>Edit: Ahja, zum Lernen. Naja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323100</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Mon, 13 May 2013 20:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:28:07 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Wenn du C++11 verwenden kannst. Wieso solltest du ein std::array in einen std::vector stopfen wollen? Welchen Grund gibt es dafür?</p>
</blockquote>
<p>Wieso std::array? Ich will eigentlich ein std::initializer_list verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323103</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 13 May 2013 20:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:36:01 GMT]]></title><description><![CDATA[<p>nonli schrieb:</p>
<blockquote>
<p>Du irrst <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>
<pre><code class="language-cpp">using std::begin; using std::end;
vector&lt;int&gt; vec(begin(array), end(array));
</code></pre>
</blockquote>
<p>Ok, das lasse ich noch gerade als komfortabel durchgehen wobei</p>
<pre><code>vector&lt;int&gt; vec(init);
</code></pre>
<p>doch komfortabler wäre.</p>
<p>nonli schrieb:</p>
<blockquote>
<p>Ansonsten kannst du den Vektor auch gleich direkt füllen</p>
<pre><code class="language-cpp">std::vector&lt;unsigned&gt; vec = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,
34,35,36,37,38,39,40,41,42,34,44,45,46,47,48,49};
</code></pre>
</blockquote>
<p>Das wollte ich gerade vermeiden, das an mehreren Stellen ausschreiben zu müssen.</p>
<p>nonli schrieb:</p>
<blockquote>
<p>bzw.</p>
<pre><code class="language-cpp">std::vector&lt;unsigned&gt; vec(49);
std::iota(begin(vec), end(vec), 1);
</code></pre>
<p>Alles seit C++11.</p>
</blockquote>
<p><strong>Das</strong> ist in der Tat ne tolle Sache und kannte ich noch nicht. Hat allerdings deutlich höhere Laufzeitkosten oder? (Ich weiß, dass das hier nicht relevant ist, nur aus Interesse).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323107</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 13 May 2013 20:36:01 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:42:38 GMT]]></title><description><![CDATA[<p>Ne andere Methode wäre natürlich, einfach einen static constexp vector zu nehmen, aber ich dachte das eine std::initializer_list zum initialisieren vielleicht zweckmäßiger wäre.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323109</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Mon, 13 May 2013 20:42:38 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Mon, 13 May 2013 20:59:26 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p><strong>Das</strong> ist in der Tat ne tolle Sache und kannte ich noch nicht. Hat allerdings deutlich höhere Laufzeitkosten oder? (Ich weiß, dass das hier nicht relevant ist, nur aus Interesse).</p>
</blockquote>
<p>ich würde spontan tippen, dass iota schneller ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323115</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Mon, 13 May 2013 20:59:26 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 05:00:37 GMT]]></title><description><![CDATA[<p>TNA schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Wenn du C++11 verwenden kannst. Wieso solltest du ein std::array in einen std::vector stopfen wollen? Welchen Grund gibt es dafür?</p>
</blockquote>
<p>Wieso std::array? Ich will eigentlich ein std::initializer_list verwenden.</p>
</blockquote>
<p>initializer_list ist kein gewöhnlicher Container. Es hat einige Eigenschaften wie bspw. dass es die Elemente auf die es verweist gar nicht selber hält oder gar besitzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323140</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 14 May 2013 05:00:37 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 06:25:28 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<pre><code>std::vector&lt;int&gt; vec( std::begin(arr), std::end(arr) ); /// Edit: Ich bin doof. 's gibt ja std::begin/end...
</code></pre>
</blockquote>
<p>Es ist ätzend, dass Du ständig Deine Beiträge derart editierst, dass die ganze Scheiße die vorher da stand, ausgebügelt wurde, und die nachfolgenden Beiträge nur noch verwirren.<br />
Höre entweder ganz auf zu antworten, wenn Du Dir nicht zu 100% sicher bist, oder streiche den Müll der vorher da stand einfach nur durch.</p>
<p>Das hier war noch ein harmloser Fall aber es musste mal gesagt werden.<br />
Und Deine Standardreaktion, dass ich sowieso nur ein Unreg bin, kannst Du Dir direkt sparen. Ich war schon im Forum, als Du noch in die Hosen gemacht hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323148</guid><dc:creator><![CDATA[Nova_]]></dc:creator><pubDate>Tue, 14 May 2013 06:25:28 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 06:42:02 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>initializer_list ist kein gewöhnlicher Container. Es hat einige Eigenschaften wie bspw. dass es die Elemente auf die es verweist gar nicht selber hält oder gar besitzt.</p>
</blockquote>
<p>Wie so oft bei deinen Posts: Das Gegenteil ist der Fall.</p>
<p>initializer_list ist kein gewöhnlicher Container. Er hat einige Eigenschaften wie bspw. dass es die Elemente auf die es verweist selber hält und besitzt. Er beschützt sie bestmöglich und zeigt sie immer nur als const-Referenz, es gibt keine Möglichkeit, sie rauszumoven. Er ist quasi immutable. Darum kann er kopiert werden ohne die unterliegenden Elemente mitzukopieren.</p>
<p>Dieses Verhalten ist unintuitiv und schädlich für die Performance. Das ist einer der Gründe, weshalb die uniform Initialisation Mist ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323151</guid><dc:creator><![CDATA[nonli]]></dc:creator><pubDate>Tue, 14 May 2013 06:42:02 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 06:48:49 GMT]]></title><description><![CDATA[<p>nonli schrieb:</p>
<blockquote>
<p>Er hat einige Eigenschaften wie bspw. dass es die Elemente auf die es verweist selber hält und besitzt.</p>
</blockquote>
<p>Besitz zeigt sich mMn dadurch, dass jede Instanz eigene Elemente hat.<br />
Das es sie hält, stimmt vielleicht - wie man halten halt definiert.<br />
Aber:</p>
<blockquote>
<p>Copying an initializer list does not copy the underlying elements.</p>
</blockquote>
<p>Daher würde ich nicht von &quot;Besitz&quot; sprechen. Gerade wenn initializer_list die Elemente nicht selber allokiert oder zerstört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323153</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 14 May 2013 06:48:49 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 06:54:34 GMT]]></title><description><![CDATA[<p>Es ist jedenfalls falsch zu denken, die initializer_list sei nur ein Proxy auf ein bestehendes Array.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323154</guid><dc:creator><![CDATA[nonli]]></dc:creator><pubDate>Tue, 14 May 2013 06:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 07:12:46 GMT]]></title><description><![CDATA[<p>nonli schrieb:</p>
<blockquote>
<p>Es ist jedenfalls falsch zu denken, die initializer_list sei nur ein Proxy auf ein bestehendes Array.</p>
</blockquote>
<p>Machst du da extra eine Anspielung auf <a href="http://en.cppreference.com/w/cpp/utility/initializer_list" rel="nofollow">cppreference</a>s Artikel?</p>
<blockquote>
<p>An object of type std::initializer_list&lt;T&gt; is a lightweight proxy object that provides access to an array of objects of type T.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2323155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323155</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 14 May 2013 07:12:46 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 07:28:51 GMT]]></title><description><![CDATA[<p>&quot;an array&quot; ist zwar nicht falsch, kann aber unterschiedlich verstanden werden. Deine Posts behaupten, initializer_list sei ein Proxy auf ein beliebiges Array. Das ist falsch, initializer_list ist nämlich ein Proxy auf ein Array, das von allen initializer_lists gemeinsam besessen und verwaltet wird. Ein bestehendes Array muss erst zum initializer_lists e.V. kopiert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323160</guid><dc:creator><![CDATA[nonli]]></dc:creator><pubDate>Tue, 14 May 2013 07:28:51 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 07:52:48 GMT]]></title><description><![CDATA[<p>Also doch ein Proxy.</p>
<blockquote>
<p>Deine Posts behaupten, initializer_list sei ein Proxy auf ein beliebiges Array.</p>
</blockquote>
<p>Jo. So ist es nämlich, theoretisch. Der Compiler (bzw. Hersteller) kann damit machen was er auch immer will. Und <code>initializer_list</code> kann auf jedes Array Zugriff bieten, bzw. es wrappen. Das es keine speziellen Copy-Semantics gibt, isst dabei nicht wichtig, es geht hier nur darum was <code>initializer_list</code> kann und was nicht. Und es kann auf jedes beliebige Array Zugriff bieten.</p>
<blockquote>
<p>Das ist falsch, initializer_list ist nämlich ein Proxy auf ein Array</p>
</blockquote>
<p>Aha.</p>
<blockquote>
<p>das von allen initializer_lists gemeinsam besessen und verwaltet wird.</p>
</blockquote>
<p>Aber es ist nicht wichtig, ob eine bestimmte Menge von initializer_lists etwas tut. Hauptsache ist: initializer_list verweist auf ein Array. Das wars.</p>
<blockquote>
<p>Ein bestehendes Array muss erst zum initializer_lists e.V. kopiert werden.</p>
</blockquote>
<p>Wohin kopiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323165</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Tue, 14 May 2013 07:52:48 GMT</pubDate></item><item><title><![CDATA[Reply to Statische konstante Initialisierungsliste in Klasse on Tue, 14 May 2013 10:26:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct foo
{
static constexpr std::initializer_list&lt;int&gt; bar = { 0 };
};
</code></pre>
<p>hat, der defekten Formulierung des aktuellen Standards zufolge, undefiniertes Verhalten, wenn foo::bar später verwendet wird (Das Beispiel in 8.5.4/6 widerspricht dem Text und ist nicht normativ). Dieser Fehler wurde im aktuellen Entwurf <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#1290" rel="nofollow">korrigiert</a>.</p>
<p>Diese Korrektur ist zwar auch unbrauchbar:</p>
<blockquote>
<p>The array has the same lifetime as any other temporary object (12.2 [class.temporary]), except that initializing an initializer_list object from the array extends the lifetime of the array exactly like binding a reference to a temporary.</p>
</blockquote>
<p>Da ein initializer_list-Objekt nicht <em>&quot;from [an] array&quot;</em> initialisiert wird, ist diese Formulierung offensichtlich auch verunglückt.</p>
<p>Die Absicht dürfte allerdings klar sein. Praktisch dürfte es keinen vernünftigen Grund geben, initializer_list Objekte als Member zu verwenden. initialisierer_list ist kein Container.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2323169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2323169</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 14 May 2013 10:26:07 GMT</pubDate></item></channel></rss>