<?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[Typ eines Template Parameter]]></title><description><![CDATA[<p>hi,</p>
<p>wie kann ich abhängig vom Typ eines Template seinen Wert initialisieren ?</p>
<pre><code class="language-cpp">using namespace std;

template&lt;typename T1&gt; class cTest
{
    private:
        T1 _v1;

    public:
        cTest()
        {
            _v1 = 0;      // für int
            //_v1 = &quot;&quot;;   // für string ??

        }

};

int main()
{

    cTest&lt;int&gt; ival;
    //cTest&lt;string&gt; sval;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/308760/typ-eines-template-parameter</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 15:18:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/308760.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Oct 2012 18:46:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 18:46:08 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>wie kann ich abhängig vom Typ eines Template seinen Wert initialisieren ?</p>
<pre><code class="language-cpp">using namespace std;

template&lt;typename T1&gt; class cTest
{
    private:
        T1 _v1;

    public:
        cTest()
        {
            _v1 = 0;      // für int
            //_v1 = &quot;&quot;;   // für string ??

        }

};

int main()
{

    cTest&lt;int&gt; ival;
    //cTest&lt;string&gt; sval;

}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2257145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257145</guid><dc:creator><![CDATA[offensiv]]></dc:creator><pubDate>Thu, 04 Oct 2012 18:46:08 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 18:48:31 GMT]]></title><description><![CDATA[<p>Mit der Konstruktor-Initialisierungsliste. Dort rufst du den Standardkonstruktor (bzw. für int die Null-Initialisierung) auf.</p>
<pre><code class="language-cpp">cTest() : _v1()
{
}
</code></pre>
<p>&lt;<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f4a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--light_bulb"
      title=":bulb:"
      alt="💡"
    />&gt;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257148</guid><dc:creator><![CDATA[glühbirne]]></dc:creator><pubDate>Thu, 04 Oct 2012 18:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 18:49:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename T1&gt; class cTest
{
    private:
        T1 _v1;

    public:
        cTest() : _v1()
        {
        }

};

int main()
{
	cTest&lt;int&gt; ival;
	cTest&lt;string&gt; sval;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2257149</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257149</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 04 Oct 2012 18:49:41 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 18:58:42 GMT]]></title><description><![CDATA[<p>Kommt darauf an, wie gravierend die Unterscheidung ist, die Faustregel wäre erstmal versuchen, eine Lösung ohne Spezialisierung zu finden. In deinem Fall wäre das eben der Default-Ctor.</p>
<p>Spezialisierung wäre dann die Alternative, wenn es wirklich nicht mehr anders geht.<br />
Beispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt;
struct Test
{
        T var;

        Test();
};

template&lt;typename T&gt;
Test&lt;T&gt;::Test():
        var(0){}
template&lt;&gt;
Test&lt;std::string&gt;::Test():
        var(&quot;LoL!&quot;){}

int main()
{
        Test&lt;std::string&gt; a;
        std::cout &lt;&lt; a.var;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2257151</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257151</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 04 Oct 2012 18:58:42 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 19:01:11 GMT]]></title><description><![CDATA[<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257152</guid><dc:creator><![CDATA[offensiv]]></dc:creator><pubDate>Thu, 04 Oct 2012 19:01:11 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 19:19:28 GMT]]></title><description><![CDATA[<p><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="🤡"
    /> Ich möchte noch anmerken: Wenn eine Klasse keinen selbst-definierten Konstruktor hat, werden temporäre Objekte automatisch value-initialized. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2257155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257155</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 04 Oct 2012 19:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 23:48:23 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p><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="🤡"
    /> Ich möchte noch anmerken: Wenn eine Klasse keinen selbst-definierten Konstruktor hat, werden temporäre Objekte automatisch value-initialized. <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>Naja... ich kenne jetzt keinen Weg zu einem temporären Objekt zu kommen ohne dass entweder<br />
* Ein anderes Objekt kopiert wird oder<br />
* Die Value-Initialization-Syntax &quot;T()&quot; verwendet wird</p>
<p>Von daher ist die Aussage ziemlich sinnfrei ... oder hab ich da jetzt was falsch verstanden?</p>
<p>Die einzige C++ Eigenart die mir hierzu noch einfällt ist dass Value-Initialization von PODs == Zero-Initialization aller Member~~, wenn der POD keinen Default-Konstruktor hat.~~ (Darf er sowieso nicht, dann wäre er kein POD mehr)<br />
Das kann zu üblen Überraschungen führen, wenn Klassen unbeabsichtigt von PODs zu non-PODs werden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257172</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Oct 2012 23:48:23 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 21:10:43 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>wenn der POD keinen Default-Konstruktor hat.</p>
</blockquote>
<p>Ich bin jetzt mit dem C++11 noch nciht so weit, dass ich solche Dinge nachgeschaut hätte - aber IIRC gehörte zur Definition eines POD, dass er garkeinen Konstruktor hat oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257182</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 04 Oct 2012 21:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 21:22:34 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>wenn der POD keinen Default-Konstruktor hat.</p>
</blockquote>
<p>Ich bin jetzt mit dem C++11 noch nciht so weit, dass ich solche Dinge nachgeschaut hätte - aber IIRC gehörte zur Definition eines POD, dass er garkeinen Konstruktor hat oder nicht?</p>
</blockquote>
<p>Jup. Ich könnte dir jetzt den Standardteil liefern, aber ich bin zu faul... <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/2257183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257183</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 04 Oct 2012 21:22:34 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 21:24:07 GMT]]></title><description><![CDATA[<p>Ach, was solls.</p>
<p>§9.10 schrieb:</p>
<blockquote>
<p>A POD struct is a non-union class that is both a <strong>trivial class</strong> and a standard-layout class</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<p>§9.6 schrieb:</p>
<blockquote>
<p>A trivial class is a class that has a <strong>trivial default constructor</strong> (12.1) and is <strong>trivially copyable</strong>.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<p>§9.6 schrieb:</p>
<blockquote>
<p>A trivially copyable class is a class that:<br />
<strong>— has no non-trivial copy constructors (12.8),<br />
— has no non-trivial move constructors (12.8),<br />
— has no non-trivial copy assignment operators (13.5.3, 12.8),<br />
— has no non-trivial move assignment operators (13.5.3, 12.8), and<br />
— has a trivial destructor (12.4).</strong></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Fazit: Ein POD hat keine User-definierten Konstruktoren oder Destruktoren.<br />
Alle Standard-Zitate sind N3337 entnommen.</p>
<p>P.S.: Die Aussage, dass er keinen Konstruktor hat, ist natürlich Blödsinn <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/2257186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257186</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 04 Oct 2012 21:24:07 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 21:37:12 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p><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="🤡"
    /> Ich möchte noch anmerken: Wenn eine Klasse keinen selbst-definierten Konstruktor hat, werden temporäre Objekte automatisch value-initialized. <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>Eine gewagte Behauptung.</p>
<pre><code class="language-cpp">struct foo
{
    char x;
    int:13;
};
foo bar() { foo x = { 42 }; return x; }

bar(); // Rückgabewert nicht value-initialisiert, padding und das unbenannte Bitfeld könnten von 0 verschieden sein
foo x = { 42 };
foo(x); // nicht value-initialisiert, padding und das unbenannte Bitfeld könnten von 0 verschieden sein

foo{ 42 }; // auch nicht value-initialisiert
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2257190</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257190</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 04 Oct 2012 21:37:12 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Thu, 04 Oct 2012 23:46:01 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>wenn der POD keinen Default-Konstruktor hat.</p>
</blockquote>
<p>Ich bin jetzt mit dem C++11 noch nciht so weit, dass ich solche Dinge nachgeschaut hätte - aber IIRC gehörte zur Definition eines POD, dass er garkeinen Konstruktor hat oder nicht?</p>
</blockquote>
<p>Ich hab's noch nicht im neuen Standard nachgelesen, ... irgendwas sollte bezüglich Definition von PODs geändert werden, und ich war mir nimmer sicher was.<br />
(Ich glaube es gibt um das Erlauben von public non-virtual Member-Funktionen oder sowas, weiss nimmer).</p>
<p>Daher hab ich das &quot;wenn&quot; einfach mal dazugeschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257197</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257197</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Oct 2012 23:46:01 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Fri, 05 Oct 2012 06:16:37 GMT]]></title><description><![CDATA[<p>Wie ist es denn jetzt eigentlich. Wenn man von C++ spricht ist, da jetzt Standard, immer C++11 gemeint, wenn nix anderes dazu geschrieben wurde, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257205</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 05 Oct 2012 06:16:37 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Fri, 05 Oct 2012 06:34:21 GMT]]></title><description><![CDATA[<p>Butterbrot schrieb:</p>
<blockquote>
<p>Wie ist es denn jetzt eigentlich. Wenn man von C++ spricht ist, da jetzt Standard, immer C++11 gemeint, wenn nix anderes dazu geschrieben wurde, oder?</p>
</blockquote>
<p>Jein. Zur Zeit sollte man nur dann pauschal von C++ sprechen, wenns bei dem Thema keine relevanten Unterschiede zwischen C++11 oder C++03 gibt. Sonst sollte man immer dazu sagen, wenns um etwas geht, was erst ab C++11 gilt, oder (seltener) was mit C++11 nicht mehr so gilt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257208</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257208</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 05 Oct 2012 06:34:21 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Fri, 05 Oct 2012 06:54:26 GMT]]></title><description><![CDATA[<p>Das ist doch genau der Fall, für den man in C++11 die „Uniform Initialization“ eingeführt hat:</p>
<pre><code class="language-cpp">template&lt;typename T1&gt; class cTest
{
    private:
        T1 _v1;

    public:
        cTest() : _v1{}  // TADA
        {
        }

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2257210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257210</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Fri, 05 Oct 2012 06:54:26 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Fri, 05 Oct 2012 07:21:23 GMT]]></title><description><![CDATA[<p>Butterbrot schrieb:</p>
<blockquote>
<p>Wie ist es denn jetzt eigentlich. Wenn man von C++ spricht ist, da jetzt Standard, immer C++11 gemeint, wenn nix anderes dazu geschrieben wurde, oder?</p>
</blockquote>
<p>Wenn Sone schreibt, dann ja. Ansonsten: nein! Es ist zwar der neue Standard, aber er wird nur von den aktuellsten Compilern untertsützt und das auch nicht immer vollständig.</p>
<p>Und da es viele gibt, die eben nicht mit diesen Compilern arbeiten und dementsprechend die neuen Features nicht nutzen können, sollte das explizit erwähnt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2257215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257215</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 05 Oct 2012 07:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to Typ eines Template Parameter on Fri, 05 Oct 2012 07:44:58 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Wenn Sone schreibt, dann ja.</p>
</blockquote>
<p>Nein. Lies meinen Post nochmal in Ruhe durch, und dann bemerkst du, was ich nebenbei dazu geschrieben hab'.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/16077">@ipsec</a>: Finde mir mal das Wort &quot;Uniform initialization&quot; im Standard <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/2257225</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2257225</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 05 Oct 2012 07:44:58 GMT</pubDate></item></channel></rss>