<?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[Gelernt aus Fehlern]]></title><description><![CDATA[<p>Bin mir nicht sicher, ob die Verlinkung zu folgendem Artikel hier richtig ist. Viele kennen diesen Artikel sicher schon, ich poste trotzdem <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>
<p><a href="http://www.heise.de/developer/artikel/C-11-auch-ein-Stimmungsbild-1345406.html" rel="nofollow">http://www.heise.de/developer/artikel/C-11-auch-ein-Stimmungsbild-1345406.html</a></p>
<p>Viel Spaß beim Lesen,<br />
T.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/293183/gelernt-aus-fehlern</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 13:08:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/293183.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Sep 2011 07:22:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 07:22:33 GMT]]></title><description><![CDATA[<p>Bin mir nicht sicher, ob die Verlinkung zu folgendem Artikel hier richtig ist. Viele kennen diesen Artikel sicher schon, ich poste trotzdem <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>
<p><a href="http://www.heise.de/developer/artikel/C-11-auch-ein-Stimmungsbild-1345406.html" rel="nofollow">http://www.heise.de/developer/artikel/C-11-auch-ein-Stimmungsbild-1345406.html</a></p>
<p>Viel Spaß beim Lesen,<br />
T.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124175</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124175</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 07:22:33 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 08:31:24 GMT]]></title><description><![CDATA[<p>Naja, Punkt 8 (Multithreading) kommt auch etwas kurz, aber das hat der Autor ja am Anfang angedeutet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124196</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 08:31:24 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:01:26 GMT]]></title><description><![CDATA[<p>C++ ist und bleibt meine Lieblingssprache, auch wenn ich in anderen Sprachen deutlich effizienter programmiere. Aber das puristische und der Hohe Grad an Kontrolle ist es gerade, was mir so gefaellt.</p>
<p>Dennoch wuerde ich im Beruf C++ nur benutzen, wenn Performance eines der wichtigsten Kriterien ist. In allen anderen Faellen ist .NET und Java mittlerweile einfach zu ueberlegen.</p>
<p>Den neuen Standard finde ich uebrigens eher enttaeuschend. Habe mir viel mehr im Bereich Multithreading erwartet...</p>
<p>~<br />
edit durch SeppJ: Mal wieder den von Pi angezettelten Flamewar aus dem Thread gelöscht. Musste dazu auch Teile deines Beitrags ändern.~</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124198</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124198</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:01:26 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 08:39:16 GMT]]></title><description><![CDATA[<p>Gerade der ersten Absatz des Artikels ist Schwachsinn.</p>
<blockquote>
<p>Dennoch wuerde ich im Beruf C++ nur benutzen, wenn Performance eines der wichtigsten Kriterien ist. In allen anderen Faellen ist .NET und Java mittlerweile einfach zu ueberlegen.</p>
</blockquote>
<p>Das uebrige BlaBla.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124202</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124202</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 27 Sep 2011 08:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 08:41:27 GMT]]></title><description><![CDATA[<p>Den Artikel les ich mir jetzt auch nicht durch, heise Developer ist allgemein nichts für mich, aber dass shared_ptr für viele das wichtigste Feature von C++11 sein wird, seh ich auch so. Das sind natürlich alles Leute, die pi auch nicht ernst nehmen würde, aber was solls. <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/2124204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124204</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 27 Sep 2011 08:41:27 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 08:59:30 GMT]]></title><description><![CDATA[<p>Also meiner Meinung nach sind die wichtigsten C++11 Features auto, lambdas, rvalue-refs, variadic templates und initializer lists. Wenn man nach der Verwendungshäufigkeit geht, würd ich sagen, dass <code>unique_ptr</code> sehr viel wichtiger ist als <code>shared_ptr</code> . Einen tatsächlichen Fall von Shared-Ownership hab ich vergleichsweise selten (um nicht zu sagen praktisch nie), nicht nur in C++.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124210</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Tue, 27 Sep 2011 08:59:30 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 08:59:16 GMT]]></title><description><![CDATA[<p>Richtig, es gibt shared_ptr bei boost. Man könnte also argumentieren, dass<br />
shared_ptr als neues Element des Standards wenig positives bringen.</p>
<p>Ich darf auf der Arbeit aber keine Abhängigkeit zu boost einführen, für mich<br />
ist das also schon ein wichtiges Kriterium, den Kram im Standard zu haben.</p>
<p>Auch hoffe ich, dass mittel/langfristig alle die Standard-Klassen nutzen<br />
und nicht Eigenentwicklungen, damit ich nicht QSharedPointer, boost::shared_ptr<br />
und std::shared_ptr gleichzeitig habe.</p>
<p>Wichtiger finde ich allerdings unique_ptr, ganz einfach, weil es dafür in<br />
C++03 keinen adäquaten Ersatz gibt.</p>
<p>Unterm Strich sind smart_ptr sicherlich gut geeignet unter den TOP10 des<br />
neuen Standards. Wer anderer Meinung ist: Welches im Artikel nicht genannte<br />
Feature ist wichtiger und warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124211</guid><dc:creator><![CDATA[Standard_wichtig]]></dc:creator><pubDate>Tue, 27 Sep 2011 08:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:04:14 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Das uebrige BlaBla.</p>
</blockquote>
<p><a href="http://de.wikipedia.org/wiki/Ironie" rel="nofollow">http://de.wikipedia.org/wiki/Ironie</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124217</guid><dc:creator><![CDATA[this-*gt*that]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:04:14 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:14:11 GMT]]></title><description><![CDATA[<p>Mir gefällt die Einführung des static_assert() Ausdrucks, um &quot;besseren&quot; Template-code zu schreiben. Dann kann ich endlich auf solche Konstrukte verzichten:</p>
<pre><code class="language-cpp">/// Alternative implementation for static_assert() C++0x.
template&lt;bool T&gt;
class StaticAssert;
template&lt;&gt;
class StaticAssert&lt;true&gt; {
};
#define STATIC_ASSERT(expression) StaticAssert&lt;(expression)&gt;()
</code></pre>
<p>Schön wäre noch, wenn der Compiler den Kopierkonstruktor und den Zuweisungsoperator nicht automatisch generieren würde. Lässt sich aber nach dem Google-Style-Guide (s.u.) oder durch &quot;boost::noncopyable&quot; ganz gut umgehen. Wobei ich ersteren Ansatz vorziehe, um Vererbung zu vermeiden. Ist dann Geschmackssache, ob man Compilerfehler oder Linkerfehler bei Metacode vorzieht.</p>
<pre><code class="language-cpp">/// A macro to disallow the copy constructor and operator= functions.
/// This should be used in the private declarations for a class (Google).
#define DISALLOW_COPY_AND_ASSIGN(T) \
  T(const T&amp;);                      \
  void operator=(const T&amp;)
</code></pre>
<p>Da ich Boost nicht verwenden darf, ist die Einführung von Multithreading in die Sprachelemente eine angenehme Bereicherung. Nur hoffentlich erwarte ich jetzt nicht zuviel...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124230</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:14:11 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:14:17 GMT]]></title><description><![CDATA[<p>dot schrieb:</p>
<blockquote>
<p>Wenn man nach der Verwendungshäufigkeit geht, würd ich sagen, dass <code>unique_ptr</code> sehr viel wichtiger ist als <code>shared_ptr</code> .</p>
</blockquote>
<p>OK. Ich hab shared_ptr gesagt und &quot;die neuen Smartpointer&quot; gemeint. Der Autor vielleicht auch, unique_ptr erwähnt er ja gar nicht nochmal gesondert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124231</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:14:17 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:17:19 GMT]]></title><description><![CDATA[<blockquote>
<p>Schön wäre noch, wenn der Compiler den Kopierkonstruktor und den Zuweisungsoperator nicht automatisch generieren würde.</p>
</blockquote>
<pre><code class="language-cpp">class Foo
{
  Foo(Foo const&amp;) = delete;
  Foo&amp; operator=(Foo const&amp;) = delete;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2124234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124234</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:17:19 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:17:57 GMT]]></title><description><![CDATA[<p>Vielleicht geht das jetzt zu weit, aber gibts eine elegantere Lösung in Verbindung mit C++0x hinsichtlich berechtigter Compiler-Warnings?</p>
<pre><code class="language-cpp">// Preloads the given address into L1/L2 cache.
inline void GenericPrefetch(char* address) {
#if defined(ENABLE_PREFETCH)
  _mm_prefetch(address, _MM_HINT_T2);
  _mm_prefetch(address + 64, _MM_HINT_T2);
#else
  UNREFERENCED_FORMAL_PARAMETER(address);
#endif
}
</code></pre>
<p>Ich umgehe das mit dem kleinen Makro:</p>
<pre><code class="language-cpp">/// Suppress warnings about an unreferenced formal parameter.
#define UNREFERENCED_FORMAL_PARAMETER(x) static_cast&lt;void&gt; (x)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2124235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124235</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:17:57 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:21:18 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<blockquote>
<p>Schön wäre noch, wenn der Compiler den Kopierkonstruktor und den Zuweisungsoperator nicht automatisch generieren würde.</p>
</blockquote>
<pre><code class="language-cpp">class Foo
{
  Foo(Foo const&amp;) = delete;
  Foo&amp; operator=(Foo const&amp;) = delete;
};
</code></pre>
</blockquote>
<p><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="😕"
    /> Das habe ich ja noch nie gesehen... Gehört das zu C++0x, oder habe ich etwas verpasst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124236</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124236</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:21:18 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:21:56 GMT]]></title><description><![CDATA[<p>Ja, du kannst so explizit Funktionen aktivieren/deaktivieren, indem du = delete/default schreibst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124237</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:21:56 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:28:34 GMT]]></title><description><![CDATA[<p><code>final</code> finde ich auch ganz praktisch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124242</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:28:34 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:33:33 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Ja, du kannst so explizit Funktionen aktivieren/deaktivieren, indem du = delete/default schreibst.</p>
</blockquote>
<p>Coole Sache...</p>
<p>Quelle Wikipedia C++11:<br />
&quot;An attempt to call f() with an int will be rejected by the compiler, instead of performing a silent conversion to double. This can be generalized to disallow calling the function with any type other than double as follows:&quot;</p>
<pre><code class="language-cpp">struct OnlyDouble {
    void f(double d);
    template&lt;class T&gt; void f(T) = delete;
};
</code></pre>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/2124245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124245</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:33:33 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 09:36:33 GMT]]></title><description><![CDATA[<p>this-&gt;that schrieb:</p>
<blockquote>
<p>knivil schrieb:</p>
<blockquote>
<p>Das uebrige BlaBla.</p>
</blockquote>
<p><a href="http://de.wikipedia.org/wiki/Ironie" rel="nofollow">http://de.wikipedia.org/wiki/Ironie</a></p>
</blockquote>
<p>Und dein Ironiesignal ist wo?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124247</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 27 Sep 2011 09:36:33 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 10:47:48 GMT]]></title><description><![CDATA[<p>Tomahawk schrieb:</p>
<blockquote>
<p>Schön wäre noch, wenn der Compiler den Kopierkonstruktor und den Zuweisungsoperator nicht automatisch generieren würde. Lässt sich aber nach dem Google-Style-Guide (s.u.) oder durch &quot;boost::noncopyable&quot; ganz gut umgehen. Wobei ich ersteren Ansatz vorziehe, um Vererbung zu vermeiden. Ist dann Geschmackssache, ob man Compilerfehler oder Linkerfehler bei Metacode vorzieht.</p>
</blockquote>
<p>Mit boost::noncopyable gibt es auch Compilierfehler, nicht?</p>
<p>Das Generieren von Kopierkonstruktor und (Kopier-)Zuweisungsoperator sind aber in bestimmten Situationen auch &quot;deprecated&quot;. Ich kann mir vorstellen, dass das dem ein oder anderen Compiler eine Warnung wert sein dürfte. Dann bekommt man wenigstens eine Warnung, wenn man mal die Dreierregel verletzt hat. Wenn man selbst mindestens eine Move-Operation deklariert, dann wird auch nichts mehr vom Compiler selbst deklariert/definert. Besser geht's eigentlich nicht, ohne Rückwärtskompatibilität zu C++98 zu verlieren.</p>
<p>Was Rvalue-Referenzen angeht, ist der Artikel leider nicht auf dem aktuellen Stand. Und Move-Semantik, Perfect Forwarding, Variadic Templates, auto, decltype find ich jetzt auch wichtiger als shared_ptr. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2124271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124271</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 27 Sep 2011 10:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 11:28:06 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Mit boost::noncopyable gibt es auch Compilierfehler, nicht?</p>
</blockquote>
<p>Stimmt, Zuweisung und Kopieren sind ja privat implementiert.... <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2124281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124281</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 11:28:06 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 11:31:18 GMT]]></title><description><![CDATA[<p>Noch mal zu dem heise-Artikel: ich muß sagen, das es gut ist, das es wenigstens einen deutschen Artikel gibt. Es wäre schön, wenn da mehr kommen würde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124282</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 27 Sep 2011 11:31:18 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 11:40:41 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>Noch mal zu dem heise-Artikel: ich muß sagen, das es gut ist, das es wenigstens einen deutschen Artikel gibt. Es wäre schön, wenn da mehr kommen würde.</p>
</blockquote>
<p>Sehe ich sehr ähnlich. Habe das Thema auch deshalb hier eingestellt, um eine rege Diskussion anzuregen und daraus noch mehr zu erfahren. Denn ich bin selbst nicht tief in der Materie C++11.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124284</guid><dc:creator><![CDATA[Tomahawk]]></dc:creator><pubDate>Tue, 27 Sep 2011 11:40:41 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 12:17:29 GMT]]></title><description><![CDATA[<p>Weiß wer eigentlich, wann (und ob) es möglich sein wird, einen string als template parameter zu übergeben?<br />
z.B.</p>
<pre><code class="language-cpp">template&lt; class ...char &gt;
class t_parser
{
};

t_parser&lt; &quot;5+3*7&quot; &gt; p;
</code></pre>
<p>Da es das ja noch nicht mit c++11 gibt: gibts irgendeinen workaround, wie man einen string trotzdem mit templates auswerten kann?<br />
(ich meine nicht sowas wie <code>t_parser&lt;'5','+','3'&gt;)</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124304</guid><dc:creator><![CDATA[GorbGorb]]></dc:creator><pubDate>Tue, 27 Sep 2011 12:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 12:18:54 GMT]]></title><description><![CDATA[<p>Der Threadtitel ist aber sehr suggestiv. Aus welchen Fehlern wurde denn gelernt, von auto_ptr mal abgesehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124306</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 27 Sep 2011 12:18:54 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 12:39:16 GMT]]></title><description><![CDATA[<p>GorbGorb schrieb:</p>
<blockquote>
<p>Weiß wer eigentlich, wann (und ob) es möglich sein wird, einen string als template parameter zu übergeben?<br />
z.B.</p>
<pre><code class="language-cpp">template&lt; class ...char &gt;
class t_parser
{
};

t_parser&lt; &quot;5+3*7&quot; &gt; p;
</code></pre>
<p>Da es das ja noch nicht mit c++11 gibt: gibts irgendeinen workaround, wie man einen string trotzdem mit templates auswerten kann?<br />
(ich meine nicht sowas wie <code>t_parser&lt;'5','+','3'&gt;)</code></p>
</blockquote>
<p>Das wird nicht möglich sein. Allerdings gibt es selbstdefinierte Literale, die man für diesen Zweck benutzen kann.</p>
<pre><code class="language-cpp">template &lt;char... c&gt; struct expression {};
template &lt;char... c&gt; constexpr expression&lt;c...&gt; operator &quot;&quot; _exp() { return expression&lt;c...&gt;(); }

template &lt;typename T&gt; class t_parser {};

t_parser&lt; decltype(&quot;5+3*7&quot;_exp) &gt; p;
</code></pre>
<p>Falls dein Compiler constexpr ausreichend unterstützt (also z.B. gcc-4.6+) und deine Strings als benannte Konstanten vorliegen, gibt es auch Möglichkeiten, die Zeichen dieses Strings als Templateparameter zu verwenden, <a href="http://www.c-plusplus.net/forum/291117" rel="nofollow">hier</a> habe ich das schon mal gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124312</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 27 Sep 2011 12:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 13:39:11 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Der Threadtitel ist aber sehr suggestiv. Aus welchen Fehlern wurde denn gelernt, von auto_ptr mal abgesehen?</p>
</blockquote>
<p>auto_ptr ist eine Sache, aber hauptsächlich export. Steht aber auch im Artikel.</p>
<p>Daraus hat man gelernt, die Concepts erstmal nicht mit rein zu nehmen und die Threading-Geschichte ist noch nicht komplett. Weiterhin werden Libs erstmal in den Technical Reports ausprobiert. Der TR2 ist ja schon angefangen: Boost Filesystem ist drin. Weitere Libs werden folgen, wahrscheinlich Boost Asio.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124343</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Tue, 27 Sep 2011 13:39:11 GMT</pubDate></item><item><title><![CDATA[Reply to Gelernt aus Fehlern on Tue, 27 Sep 2011 14:10:55 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Allerdings gibt es selbstdefinierte Literale, die man für diesen Zweck benutzen kann.</p>
</blockquote>
<p>Bist du dir sicher, dass das auch mit string literals funktioniert (d.h. nicht nur mit integral literals)? Der wikipedia Artikel scheint mir da anderes zu sagen (obwohl ich eigentlich eher geneigt bin dir zu glauben als einem wikipedia Artikel wenns um c++ geht).<br />
<a href="http://en.wikipedia.org/wiki/C%2B%2B11#User-defined_literals" rel="nofollow">http://en.wikipedia.org/wiki/C%2B%2B11#User-defined_literals</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2124361</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2124361</guid><dc:creator><![CDATA[GorbGorb]]></dc:creator><pubDate>Tue, 27 Sep 2011 14:10:55 GMT</pubDate></item></channel></rss>