<?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[TMP Einarbeitungsprobleme]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich versuche mich gerade in TMP einzuarbeiten und stoße direkt auf ein paar Verstaendnisprobleme.</p>
<p>Ich wollte eigentlich nur ein einfaches Beispiel probieren indem ich ein is_even Template geschrieben habe was in etwa so aussieht:</p>
<pre><code class="language-cpp">template&lt;int size&gt;
struct is_even
{
	enum {value = size % 2 == 0};
};
</code></pre>
<p>Moege man sich jetzt bitte nicht ueber die Sinnhaftigkeit auslassen sondern das erstmal nur so hinnehmen wie es ist.</p>
<p>Dieses Template wuerde ich gerne in einem anderem Klassentemplate als &quot;Bedingung&quot; benutzen um ggf. Compilerfehlermeldungen zu bekommen wenn die Instanziierung des Templates keine gerade Zahl bekommen hat.</p>
<pre><code class="language-cpp">template&lt;int size&gt;
class Square
{
	private:
		int data[size*size];

};
</code></pre>
<p>Und genau an dieser Stelle komme ich ins schwitzen, wie kann ich mein is_even Template nun als Bedingung in mein Square Template einbauen ohne es erst bei der Instanziierung zu benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/298002/tmp-einarbeitungsprobleme</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 03:14:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/298002.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Jan 2012 15:42:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 15:42:00 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich versuche mich gerade in TMP einzuarbeiten und stoße direkt auf ein paar Verstaendnisprobleme.</p>
<p>Ich wollte eigentlich nur ein einfaches Beispiel probieren indem ich ein is_even Template geschrieben habe was in etwa so aussieht:</p>
<pre><code class="language-cpp">template&lt;int size&gt;
struct is_even
{
	enum {value = size % 2 == 0};
};
</code></pre>
<p>Moege man sich jetzt bitte nicht ueber die Sinnhaftigkeit auslassen sondern das erstmal nur so hinnehmen wie es ist.</p>
<p>Dieses Template wuerde ich gerne in einem anderem Klassentemplate als &quot;Bedingung&quot; benutzen um ggf. Compilerfehlermeldungen zu bekommen wenn die Instanziierung des Templates keine gerade Zahl bekommen hat.</p>
<pre><code class="language-cpp">template&lt;int size&gt;
class Square
{
	private:
		int data[size*size];

};
</code></pre>
<p>Und genau an dieser Stelle komme ich ins schwitzen, wie kann ich mein is_even Template nun als Bedingung in mein Square Template einbauen ohne es erst bei der Instanziierung zu benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166838</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 11 Jan 2012 15:42:00 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 15:44:42 GMT]]></title><description><![CDATA[<p>Wenn du C++0x / C++11 hast:</p>
<pre><code class="language-cpp">template&lt;int size&gt;
class Square
{
    private:
        int data[size*size];
    static_assert(is_even&lt;size&gt;::value, &quot;Size must be even!&quot;);

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2166840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166840</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Wed, 11 Jan 2012 15:44:42 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 15:45:50 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Wenn du C++0x / C++11 hast:</p>
<pre><code class="language-cpp">template&lt;int size&gt;
class Square
{
    private:
        int data[size*size];
    static_assert(is_even&lt;size&gt;::value, &quot;Size must be even!&quot;);

};
</code></pre>
</blockquote>
<p>Schonmal sehr hilfreich, danke. Aber ich wuerde es auch gerne ohne Hilfe von C++ 11 machen, ist das dann auch moeglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166842</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 11 Jan 2012 15:45:50 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 15:51:20 GMT]]></title><description><![CDATA[<p>Dann bekommst du aber nicht so eine schöne Fehlermeldung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<pre><code class="language-cpp">template &lt;bool Condition&gt;
struct MustBeEven;

template &lt;&gt; 
struct MustBeEven&lt;true&gt; {};

template&lt;int size&gt;
struct is_even
{
    enum {value = size % 2 == 0};
    sizeof(MustBeEven&lt;is_even&lt;size&gt;::value&gt;);
};
</code></pre>
<p>Sollte funktionieren. Alternativ Boost.StaticAssert oder Boost.MPL BOOST_MPL_ASSERT (letzteres gibt finde ich besser Fehlermeldung, wobei ersteres wenn vorhanden auch C++11 static_assert benutzen kann) benutzen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166845</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Wed, 11 Jan 2012 15:51:20 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 16:00:18 GMT]]></title><description><![CDATA[<p>Das Problem ist dass nackte Statements in der Klasse verboten sind. Denkbar wäre aber sowas:</p>
<pre><code class="language-cpp">template&lt;int size&gt;
class Square
{
    private:
        int data[size*size];

    static const int assertion_dummy = sizeof(MustBeEven&lt;is_even&lt;size&gt;::value&gt;);

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2166852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166852</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 11 Jan 2012 16:00:18 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 16:05:47 GMT]]></title><description><![CDATA[<p>Ist das nicht auch C++11 (Direkte Zuweisung in der Klasse von static const membern?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166856</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Wed, 11 Jan 2012 16:05:47 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 16:06:44 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Ist das nicht auch C++11 (Direkte Zuweisung in der Klasse von static const membern?)</p>
</blockquote>
<p>Das ist auch in C++03 für integrale Typen möglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166858</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 11 Jan 2012 16:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 16:12:12 GMT]]></title><description><![CDATA[<p>Danke fuer die viele Einwuerfe.<br />
Worum es mir bei der Aufgabe eigentlich geht, ist vollkommen von Dritt-Anbietern oder dem neuen Standard weg zu bleiben.<br />
Ich moechte mich mit dem Thema so auseiandersetzen als wenn es kein Boost gibt( obwohl ich boost liebe) und als wenn den neuen Standard noch nicht gibt ( er ist einfach goettlich). Ich fange gerade erst mit TMP an und da ist es mir wichtig das ich erstmal mit den &quot;alten&quot; Sachen zurecht komme <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="🙂"
    /> Ihr versteht sicher was ich meine.<br />
DEshalb will ich jetzt eben ein Beispiel aus der Uni mit TMP umzusetzen (wer weiß ob es ueberhaupt geht) um auch ne ordentliche Uebung zu haben. Außer Ihr habt andere nette Uebungen die man da machen koennte um reinzukommen <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="🙂"
    /> Bin auf jedenfall auf Ideen gespannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166862</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 11 Jan 2012 16:12:12 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 16:15:24 GMT]]></title><description><![CDATA[<p>z.B Pi während der Compile-Time berechnen? :p</p>
<p>Und wenn du dann doch wieder Boost verwendest, Boost.MPL ist super <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="😃"
    /> (find ich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166865</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166865</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Wed, 11 Jan 2012 16:15:24 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 16:16:17 GMT]]></title><description><![CDATA[<p>Warum nicht einfach ein Buch hernehmen: C++ Templates: The Complete Guide ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166866</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Wed, 11 Jan 2012 16:16:17 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Einarbeitungsprobleme on Wed, 11 Jan 2012 16:20:06 GMT]]></title><description><![CDATA[<p>Ja ich habe das Buch von Alexandrescu &quot;Modern C++ Design&quot; hier neben mir und les das auch ambitioniert, nur brauch ich zum verstehen auch Uebungsaufgaben an denen ich mich versuchen kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166869</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 11 Jan 2012 16:20:06 GMT</pubDate></item></channel></rss>