<?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[Variadischer Konstruktor]]></title><description><![CDATA[<p>Hallo,</p>
<p>mein VS 2013 Express Compiler stürzt bei folgendem Code ab:</p>
<pre><code>#include &lt;iostream&gt;

struct Loud
{
	Loud(...)
	{
		std::cout &lt;&lt; '+';
	}
	Loud(Loud const&amp;)
	{
		std::cout &lt;&lt; '+';
	}
	~Loud()
	{
		std::cout &lt;&lt; '-';
	}
};

int main()
{
	Loud Foo[4];
}
</code></pre>
<p>Der Code ist schon korrekt, oder?<br />
Es wird mir ausgegeben: &quot;Microsoft (R) C/C++-Optimierungscompiler funktioniert nicht mehr&quot;<br />
Die Problemdetails:</p>
<pre><code>Problemsignatur:
  Problemereignisname:	APPCRASH
  Anwendungsname:	CL.exe
  Anwendungsversion:	18.0.21005.1
  Anwendungszeitstempel:	524faabf
  Fehlermodulname:	c1xx.dll
  Fehlermodulversion:	18.0.21005.1
  Fehlermodulzeitstempel:	524faa90
  Ausnahmecode:	c0000005
  Ausnahmeoffset:	0009e05e
  Betriebsystemversion:	6.1.7601.2.1.0.256.48
  Gebietsschema-ID:	2055
</code></pre>
<p>In der IDE wird mir folgendes ausgegeben:</p>
<pre><code>fatal error C1001: Interner Compilerfehler.
1&gt;  (Compilerdatei 'msc1.cpp', Zeile 1325)
</code></pre>
<p>Wenn der Code korrekt ist, ist der Bug bekannt?</p>
<p>Gruss</p>
<p>Edit:<br />
Bei einer typsicheren variadischen Argumentenliste tritt dasselbe Problem auf (der Compiler stürzt auch ab):</p>
<pre><code>template&lt;typename... T&gt;
	Loud(T...)
	{
		std::cout &lt;&lt; '+';
	}
</code></pre>
<p>Edit 2: <code>#include</code> vergessen und daher nachgetragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327532/variadischer-konstruktor</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 10:22:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327532.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 18 Aug 2014 09:05:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 09:21:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>mein VS 2013 Express Compiler stürzt bei folgendem Code ab:</p>
<pre><code>#include &lt;iostream&gt;

struct Loud
{
	Loud(...)
	{
		std::cout &lt;&lt; '+';
	}
	Loud(Loud const&amp;)
	{
		std::cout &lt;&lt; '+';
	}
	~Loud()
	{
		std::cout &lt;&lt; '-';
	}
};

int main()
{
	Loud Foo[4];
}
</code></pre>
<p>Der Code ist schon korrekt, oder?<br />
Es wird mir ausgegeben: &quot;Microsoft (R) C/C++-Optimierungscompiler funktioniert nicht mehr&quot;<br />
Die Problemdetails:</p>
<pre><code>Problemsignatur:
  Problemereignisname:	APPCRASH
  Anwendungsname:	CL.exe
  Anwendungsversion:	18.0.21005.1
  Anwendungszeitstempel:	524faabf
  Fehlermodulname:	c1xx.dll
  Fehlermodulversion:	18.0.21005.1
  Fehlermodulzeitstempel:	524faa90
  Ausnahmecode:	c0000005
  Ausnahmeoffset:	0009e05e
  Betriebsystemversion:	6.1.7601.2.1.0.256.48
  Gebietsschema-ID:	2055
</code></pre>
<p>In der IDE wird mir folgendes ausgegeben:</p>
<pre><code>fatal error C1001: Interner Compilerfehler.
1&gt;  (Compilerdatei 'msc1.cpp', Zeile 1325)
</code></pre>
<p>Wenn der Code korrekt ist, ist der Bug bekannt?</p>
<p>Gruss</p>
<p>Edit:<br />
Bei einer typsicheren variadischen Argumentenliste tritt dasselbe Problem auf (der Compiler stürzt auch ab):</p>
<pre><code>template&lt;typename... T&gt;
	Loud(T...)
	{
		std::cout &lt;&lt; '+';
	}
</code></pre>
<p>Edit 2: <code>#include</code> vergessen und daher nachgetragen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413879</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Mon, 18 Aug 2014 09:21:00 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 09:53:05 GMT]]></title><description><![CDATA[<p>Lol oO, in der Tat (ich hab hier nicht die Express Version, sondern Professional mit dem Update 3)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413887</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413887</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 18 Aug 2014 09:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 09:55:07 GMT]]></title><description><![CDATA[<p>gcc gibt aus: ++++----</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413888</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Mon, 18 Aug 2014 09:55:07 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 10:31:41 GMT]]></title><description><![CDATA[<p>Ohne den variadischen Konstruktor, d.h. nur mit Standardkonstruktor, kommt sowas raus wie +----</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413899</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 18 Aug 2014 10:31:41 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 11:46:10 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Ohne den variadischen Konstruktor, d.h. nur mit Standardkonstruktor, kommt sowas raus wie +----</p>
</blockquote>
<p>Du hast im Standardkonstruktor aber schon die Ausgabe vom Plus-Zeichen drin, oder? Denn ich kann genanntes Verhalten nicht reproduzieren, weder mit noch ohne Optimierungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413905</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Mon, 18 Aug 2014 11:46:10 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:08:22 GMT]]></title><description><![CDATA[<p>Wie werden denn Arrays initialisiert? Alle default initialisiert, oder ein &quot;Parameter&quot; default initialisiert und die anderen dann von diesem kopiert (ala <code>vector</code> ctor)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413908</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:08:22 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:14:24 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Wie werden denn Arrays initialisiert? Alle default initialisiert, oder ein &quot;Parameter&quot; default initialisiert und die anderen dann von diesem kopiert (ala <code>vector</code> ctor)?</p>
</blockquote>
<p>§8.5/6 schrieb:</p>
<blockquote>
<p>To default-initialize an object of type T means:<br />
[...]<br />
— if T is an array type, each element is default-initialized;</p>
</blockquote>
<p>Ich geh jetzt einfach mal davon aus, dass das eine default-Initialization ist, zu faul im Standard danach zu suchen.</p>
<p>Edit: Oh, hier:</p>
<p>§8.5/11 schrieb:</p>
<blockquote>
<p>If no initializer is specified for an object, the object is default-initialized;</p>
</blockquote>
<p>Also, ja da sollte vier mal '+' kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413909</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:14:24 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:15:34 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie werden denn Arrays initialisiert?</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>
]]></description><link>https://www.c-plusplus.net/forum/post/2413912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413912</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:15:34 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:23:47 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Wie werden denn Arrays initialisiert? Alle default initialisiert, oder ein &quot;Parameter&quot; default initialisiert und die anderen dann von diesem kopiert (ala <code>vector</code> ctor)?</p>
</blockquote>
<p>Alle in aufsteigender Reihenfolge default initialized und Destruktor dann natürlich genau umgekehrt.</p>
<p>Ist wohl in der Tat ein Bug, hast du ihn schon reported? Mit Initializer geht's bei mir:</p>
<pre><code>Loud Foo[] = { {}, {}, {}, {} };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2413913</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413913</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:23:52 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Wie werden denn Arrays initialisiert? Alle default initialisiert, oder ein &quot;Parameter&quot; default initialisiert und die anderen dann von diesem kopiert (ala <code>vector</code> ctor)?</p>
</blockquote>
<p>Interessant wird diese Frage, wenn der Defaultkonstruktor selbst ein Defaultargument hat.</p>
<pre><code class="language-cpp">struct foo {};
struct bar { bar(foo=foo()) {} };
bar* p = new bar[1000000];
</code></pre>
<p>Hier gilt eine Ausnahme, was die Lebenszeit des Defaultargumentes betrifft: es lebt nicht bis zum Ende des Ausdruckes (Stackoverflow lässt grüßen), sondern nur jeweils bis zum Ende der Initialierung des Elementes, zu dem es gehört.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413914</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413914</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:25:12 GMT]]></title><description><![CDATA[<p>Wieso <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>Ich war mir eh so-gut-wie sicher dass jedes Element einzeln default-initialized wird. Die andere Variante hätte aber zu dem von Skym0sh0 beschriebenen Verhalten gepasst. OK, nicht ganz, da es dann ein &quot;-&quot; zu wenig wäre.</p>
<p>OK, wenn ich ein wenig länger darüber nachdenke... weiss ich es eigentlich. Indirekt. Weil ich weiss dass man Arrays von nicht kopierbaren Typen machen kann. Was ja nicht gehen kann wenn es ala <code>vector</code> gemacht würde.</p>
<p>Andrerseits... danke für das Kompliment <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413915</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413915</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:25:47 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Ohne den variadischen Konstruktor, d.h. nur mit Standardkonstruktor, kommt sowas raus wie +----</p>
</blockquote>
<p>Du hast im Standardkonstruktor aber schon die Ausgabe vom Plus-Zeichen drin, oder? Denn ich kann genanntes Verhalten nicht reproduzieren, weder mit noch ohne Optimierungen.</p>
</blockquote>
<p>Mh, jetzt wo dus sagst.</p>
<p>Ich hatte vorhin etwas rumprobiert und zwischendurch kam mal die Ausgabe: &quot;+----&quot;, aber wenn ich jetzt so drüber nachdenke und auch den Test wiederhole ist alles wie erwartet. Keine Ahnung mehr wie ich diese Ausgabe hinbekommen hab.</p>
<p>Wahrscheinlich mal wieder Tomaten auf den Augen (Ó_Ó) unso</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413916</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:25:47 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 12:27:57 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
Cool, danke für die Info. Wusste ich auch nicht.</p>
<p>Wieder so eine Spezialregel die zwar wirklich Sinn macht, die Sprache dafür aber auch um ein kleines Stück komplizierter macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413918</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413918</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 18 Aug 2014 12:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to Variadischer Konstruktor on Mon, 18 Aug 2014 17:15:10 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Andrerseits... danke für das Kompliment <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>
</blockquote>
<p>Joa. Ich weiß doch wie kompetent du bist, hat mich halt ein wenig erschreckt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2413974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2413974</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 18 Aug 2014 17:15:10 GMT</pubDate></item></channel></rss>