<?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[Wie funktioniert CTAssert]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin gerade dabei mir das Buch &quot;Modern C++ Design&quot;<br />
von Andrei Alexandrescu zu gemüte zu führen.</p>
<p>Auf jeden Fall ist da im Vorwort das folgende Template<br />
aufgeführt, das als ziehmlich genial beschrieben wird:</p>
<pre><code class="language-cpp">template&lt;bool&gt; struct CTAssert;
template&lt;&gt; struct CTAssert&lt;true&gt; {};
</code></pre>
<p>Irgendwie kapiere ich die Konstruktion nicht.<br />
Laut Buch erfolgt eine Spezialisierung auf true,<br />
aber nicht auf false. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Vielleicht kann mir da jemand von euch nen Tip<br />
geben wie dieser Konstrukt funktioniert.</p>
<p>Gruss vom grübelnden Ulli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/260725/wie-funktioniert-ctassert</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 22:43:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/260725.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 08 Feb 2010 19:35:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie funktioniert CTAssert on Mon, 08 Feb 2010 19:35:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>bin gerade dabei mir das Buch &quot;Modern C++ Design&quot;<br />
von Andrei Alexandrescu zu gemüte zu führen.</p>
<p>Auf jeden Fall ist da im Vorwort das folgende Template<br />
aufgeführt, das als ziehmlich genial beschrieben wird:</p>
<pre><code class="language-cpp">template&lt;bool&gt; struct CTAssert;
template&lt;&gt; struct CTAssert&lt;true&gt; {};
</code></pre>
<p>Irgendwie kapiere ich die Konstruktion nicht.<br />
Laut Buch erfolgt eine Spezialisierung auf true,<br />
aber nicht auf false. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Vielleicht kann mir da jemand von euch nen Tip<br />
geben wie dieser Konstrukt funktioniert.</p>
<p>Gruss vom grübelnden Ulli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852677</guid><dc:creator><![CDATA[CUlli]]></dc:creator><pubDate>Mon, 08 Feb 2010 19:35:28 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktioniert CTAssert on Mon, 08 Feb 2010 20:30:39 GMT]]></title><description><![CDATA[<p>Guck mal: Was passiert denn, wenn du das versuchst?</p>
<pre><code class="language-cpp">class A;
A object;
</code></pre>
<p>Das selbe wie hier:</p>
<pre><code class="language-cpp">template &lt;bool&gt;
struct static_assertion;

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

static_assertion&lt;5 == 7&gt; assertion;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1852681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852681</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Mon, 08 Feb 2010 20:30:39 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktioniert CTAssert on Mon, 08 Feb 2010 19:54:35 GMT]]></title><description><![CDATA[<p>Der Compiler beschwert sich, weil keine Spezialisierung für <code>false</code> existiert und das Template für allgemeine <code>bool</code> s nicht definiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852686</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Mon, 08 Feb 2010 19:54:35 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktioniert CTAssert on Mon, 08 Feb 2010 22:44:30 GMT]]></title><description><![CDATA[<p>CUlli schrieb:</p>
<blockquote>
<p>Irgendwie kapiere ich die Konstruktion nicht.<br />
Laut Buch erfolgt eine Spezialisierung auf true,<br />
aber nicht auf false. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Genau darin besteht der ganze Trick. Wenn du versuchst, das Template mit <code>false</code> zu instantiieren, wird keine passende Spezialisierung gefunden (und das allgemeine Template ist nicht definiert). Deshalb muss der Compiler eine Fehlermeldung ausgeben. Wenn darin der Name <code>static_assertion</code> vorkommt, sollte schon recht gut ersichtlich sein, dass eine Compilezeit-Assertion fehlgeschlagen ist. Dennoch kann es manchmal nützlich sein, noch mehr Informationen in die Fehlermeldung zu packen, Alexandrescu wird darauf noch eingehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852782</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852782</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 08 Feb 2010 22:44:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wie funktioniert CTAssert on Tue, 09 Feb 2010 08:14:22 GMT]]></title><description><![CDATA[<p>Vielen Dank für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Jetzt versteh ich das ganze schon besser !<br />
Und nun kapier ich auch warum er schreibt,<br />
dass das was fehlt genauso wichtig<br />
ist wie das was dasteht.<br />
Nochmals vielen Dank an alle,</p>
<p>Gruss Ulli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1852864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1852864</guid><dc:creator><![CDATA[CUlli]]></dc:creator><pubDate>Tue, 09 Feb 2010 08:14:22 GMT</pubDate></item></channel></rss>