<?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[C++11-Standard zu std::begin() und anderes]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich bin ein C++11-Nub und versuche mich im Moment ein bisschen daran.</p>
<p>1. Range-based-for-loops sind nur dann verfügbar, wenn <code>std::begin()</code> und <code>std::end()</code> für den Container verfügbar sind, oder? Und ist es dann laut Standard erlaubt, diese Funktionen <s>(partiell) zu spezialisieren oder</s> zu überladen? Wenn nicht, dann müssen sich alle (eigenen) Container an die <code>Container.begin()</code> - / <code>Container.end()</code> - (und mit C++14 dann auch <code>Container.rbegin()</code> - / <code>Container.rend()</code> -) Signatur halten, nicht wahr?</p>
<p>2. Wieso bieten <code>std::priority_queue</code> sowie die geordneten assoziativen Container keine relationalen Operatoren an?</p>
<p>3. Übersehe ich einen offensichtlichen Grund wieso <code>std::iota</code> eine Funktion ist und nicht ein Funktor, geeignet für <code>std::generate</code> ? Der Funktor wäre meiner Meinung nach flexibler da man diesen selbst wieder z.B. transformieren könnte.</p>
<p>4. Was ist der Grund wieso man sich damals entschieden hat, dass man Zuweisungsoperatoren nicht global definieren darf? (ist bestimmt trivial und naheliegend, ich seh's aber im Moment wirklich nicht...)<br />
Wieso ich danach frage? Ich habe im Moment einen Fall, in welchem es mir zugutekommen würde, diesen Operator für Klassen aus der STL zu überladen (für ein wenig Syntax Sugar). Auch ansonsten kann ich mir ein paar schöne Fälle vorstellen (friend name injection).</p>
<p>5. Wann kommen Ranges in die STL? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Gruss</p>
<p>Edit: Ups, hab gerade nachgelesen, dass das partielle Spezialisieren von Funktionstemplates in C++11 noch immer nicht erlaubt ist. Peinlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/327250/c-11-standard-zu-std-begin-und-anderes</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Jul 2026 10:45:46 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/327250.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 31 Jul 2014 10:28:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Thu, 31 Jul 2014 11:05:15 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich bin ein C++11-Nub und versuche mich im Moment ein bisschen daran.</p>
<p>1. Range-based-for-loops sind nur dann verfügbar, wenn <code>std::begin()</code> und <code>std::end()</code> für den Container verfügbar sind, oder? Und ist es dann laut Standard erlaubt, diese Funktionen <s>(partiell) zu spezialisieren oder</s> zu überladen? Wenn nicht, dann müssen sich alle (eigenen) Container an die <code>Container.begin()</code> - / <code>Container.end()</code> - (und mit C++14 dann auch <code>Container.rbegin()</code> - / <code>Container.rend()</code> -) Signatur halten, nicht wahr?</p>
<p>2. Wieso bieten <code>std::priority_queue</code> sowie die geordneten assoziativen Container keine relationalen Operatoren an?</p>
<p>3. Übersehe ich einen offensichtlichen Grund wieso <code>std::iota</code> eine Funktion ist und nicht ein Funktor, geeignet für <code>std::generate</code> ? Der Funktor wäre meiner Meinung nach flexibler da man diesen selbst wieder z.B. transformieren könnte.</p>
<p>4. Was ist der Grund wieso man sich damals entschieden hat, dass man Zuweisungsoperatoren nicht global definieren darf? (ist bestimmt trivial und naheliegend, ich seh's aber im Moment wirklich nicht...)<br />
Wieso ich danach frage? Ich habe im Moment einen Fall, in welchem es mir zugutekommen würde, diesen Operator für Klassen aus der STL zu überladen (für ein wenig Syntax Sugar). Auch ansonsten kann ich mir ein paar schöne Fälle vorstellen (friend name injection).</p>
<p>5. Wann kommen Ranges in die STL? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Gruss</p>
<p>Edit: Ups, hab gerade nachgelesen, dass das partielle Spezialisieren von Funktionstemplates in C++11 noch immer nicht erlaubt ist. Peinlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411334</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 31 Jul 2014 11:05:15 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Thu, 31 Jul 2014 10:57:40 GMT]]></title><description><![CDATA[<p>1. Es gibt freie Funktionen begin und end. Diese sind zu bevorzugen, da sie relativ leicht für bestehende Container hinzugefügt werden können, deren Implementation nicht geändert werden kann oder soll. Diese reichen aus damit range based for funktioniert.</p>
<p>Rest: Keine Ahnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411340</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411340</guid><dc:creator><![CDATA[nwp3]]></dc:creator><pubDate>Thu, 31 Jul 2014 10:57:40 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Thu, 31 Jul 2014 11:10:33 GMT]]></title><description><![CDATA[<p>nwp3 schrieb:</p>
<blockquote>
<p>1. Es gibt freie Funktionen begin und end. Diese sind zu bevorzugen, da sie relativ leicht für bestehende Container hinzugefügt werden können, deren Implementation nicht geändert werden kann oder soll. Diese reichen aus damit range based for funktioniert.</p>
</blockquote>
<p>In C++03 war es nicht erlaubt Funktionen aus dem Namensraum <code>std</code> zu überladen. Dabei, dass Container gewöhnlicherweise aus Klassentemplates instanziiert wurden, sind wir uns höchstwahrscheinlich einig. Wie bietet man diese freie <code>std::begin</code> -Funktion denn an? Muss man also - wie im Op erwähnt - <code>Container.begin()</code> anbieten, damit die Standardversion von <code>std::begin</code> darauf zugreifen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411343</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 31 Jul 2014 11:10:33 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Thu, 31 Jul 2014 11:17:38 GMT]]></title><description><![CDATA[<blockquote>
<p>Range-based-for-loops sind nur dann verfügbar, wenn std::begin() und std::end() für den Container verfügbar sind, oder?</p>
</blockquote>
<p>Nein. Der Standard definiert range-based for loops nicht durch Bibliotheksabhängige Komponenten, das wäre vollkommen unnötig.</p>
<blockquote>
<p><em>begin-expr</em> and <em>end-expr</em> are determined as follows:<br />
— if <code>_RangeT</code> is an array type, <em>begin-expr</em> and end-expr are <code>__range</code> and <code>__range + __bound</code> , respectively, where <code>__bound</code> is the array bound. If <code>_RangeT</code> is an array of unknown size or an array of incomplete type, the program is ill-formed;<br />
— if <code>_RangeT</code> is a class type, the <em>unqualified-id</em>s begin and end are looked up in the scope of class <code>_RangeT</code> as if by class member access lookup (3.4.5), and if either (or both) finds at least one declaration, <em>begin-expr</em> and <em>end-expr</em> are <code>__range.begin()</code> and <code>__range.end()</code> , respectively;<br />
— otherwise, <em>begin-expr</em> and <em>end-expr</em> are <code>begin(__range)</code> and <code>end(__range)</code> , respectively, <strong>where <code>begin</code> and <code>end</code> are looked up in the associated namespaces</strong> (3.4.2).<br />
[ Note: Ordinary unqualified lookup (3.4.1) is not performed. — end note ]</p>
</blockquote>
<p>Wie du siehst müssen die Funktionen nicht Teil vom Namensraum <code>std</code> sein.</p>
<blockquote>
<p>Ups, hab gerade nachgelesen, dass das partielle Spezialisieren von Funktionstemplates in C++11 noch immer nicht erlaubt ist.</p>
</blockquote>
<p>Das macht auch überhaupt keinen Sinn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411345</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 31 Jul 2014 11:17:38 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Thu, 31 Jul 2014 11:22:35 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>Ich bin ein C++11-Nub und versuche mich im Moment ein bisschen daran.</p>
</blockquote>
<p>Die Funktion <a href="http://hackage.haskell.org/package/base-4.7.0.1/docs/Data-List.html#v:nub" rel="nofollow">nub</a> gibt es leider noch nicht in C++, auch nicht C++11. Aber std::sort+std::unique ist meistens ausreichend.</p>
<blockquote>
<p>1. Range-based-for-loops sind nur dann verfügbar, wenn <code>std::begin()</code> und <code>std::end()</code> für den Container verfügbar sind, oder?</p>
</blockquote>
<p>Nein. Siehe <a href="http://en.cppreference.com/w/cpp/language/range-for" rel="nofollow">http://en.cppreference.com/w/cpp/language/range-for</a> für das genaue Prozedere (ist schon ein bisschen absurd). Wichtig ist, dass nicht std::begin aufgerufen wird, sondern begin mit ADL.</p>
<blockquote>
<p>Und ist es dann laut Standard erlaubt, diese Funktionen <s>(partiell) zu spezialisieren oder</s> zu überladen? Wenn nicht, dann müssen sich alle (eigenen) Container an die <code>Container.begin()</code> - / <code>Container.end()</code> - (und mit C++14 dann auch <code>Container.rbegin()</code> - / <code>Container.rend()</code> -) Signatur halten, nicht wahr?</p>
</blockquote>
<p>Du kannst freie Funktionen in deinem Namespace anbieten.</p>
<blockquote>
<p>2. Wieso bieten <code>std::priority_queue</code> sowie die geordneten assoziativen Container keine relationalen Operatoren an?</p>
</blockquote>
<p>std::map/std::set bieten das an. Bei std::priority_queue macht das keinen Sinn, weil man auch nicht über die Werte iterieren kann.</p>
<blockquote>
<p>3. Übersehe ich einen offensichtlichen Grund wieso <code>std::iota</code> eine Funktion ist und nicht ein Funktor, geeignet für <code>std::generate</code> ? Der Funktor wäre meiner Meinung nach flexibler da man diesen selbst wieder z.B. transformieren könnte.</p>
</blockquote>
<p>std::iota ist ein Fehldesign.</p>
<blockquote>
<p>4. Was ist der Grund wieso man sich damals entschieden hat, dass man Zuweisungsoperatoren nicht global definieren darf? (ist bestimmt trivial und naheliegend, ich seh's aber im Moment wirklich nicht...)</p>
</blockquote>
<p>Technische Gründe gibt es keine. &quot;War schon immer so&quot;. Konstruktoren und Destruktoren kann man auch nicht global definieren, passt also mMn schon.</p>
<blockquote>
<p>Wieso ich danach frage? Ich habe im Moment einen Fall, in welchem es mir zugutekommen würde, diesen Operator für Klassen aus der STL zu überladen (für ein wenig Syntax Sugar). Auch ansonsten kann ich mir ein paar schöne Fälle vorstellen (friend name injection).</p>
</blockquote>
<p>Kennst do <a href="http://www.boost.org/doc/libs/release/libs/assign/doc/index.html" rel="nofollow">Boost.Assignment</a>? Du kannst RHS überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411348</guid><dc:creator><![CDATA[ghjkrofl]]></dc:creator><pubDate>Thu, 31 Jul 2014 11:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Thu, 31 Jul 2014 11:39:15 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>4. Was ist der Grund wieso man sich damals entschieden hat, dass man Zuweisungsoperatoren nicht global definieren darf? (ist bestimmt trivial und naheliegend, ich seh's aber im Moment wirklich nicht...)</p>
</blockquote>
<p>Das Problem hierbei ist, dass eine Verwendung des Zuweisungsoperators vor dieser Deklaration trotzdem zulässig sein müsste (in Form des Compiler generierten Operators). Aber dann wird die ODR verletzt. Ausserdem würde diese Deklaration beeinflussen, ob eine Klasse POD bzw. trivial kopierbar ist. Und das ist seltsam: man muss ja den Operator dann nicht in jeder ÜE überladen, sofern er nicht überall gebraucht wird.<br />
Beim (unären) &amp;-Operator besteht diese Problematik im Prinzip auch, allerdings wird dieser Operator nur selten überladen.<br />
Für die anderen Operatoren, die als nicht-statische Member implementiert werden müssen () [] -&gt; ist diese Beschränkung historisch bedingt. Stroustrup war ursprünglich der Ansicht, dass es technische Probleme geben würde. Wäre eigentlich schön, wenn man die auch für Aufzählungen überladen könnte. Oder die Invertierung von äußerem und innerem Operanden bei [] so wie es beim eingebauten Operator der Fall ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411351</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 31 Jul 2014 11:39:15 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Fri, 01 Aug 2014 06:27:34 GMT]]></title><description><![CDATA[<p>asfdlol schrieb:</p>
<blockquote>
<p>3. Übersehe ich einen offensichtlichen Grund wieso <code>std::iota</code> eine Funktion ist und nicht ein Funktor, geeignet für <code>std::generate</code> ? Der Funktor wäre meiner Meinung nach flexibler da man diesen selbst wieder z.B. transformieren könnte.</p>
</blockquote>
<p><code>std::iota</code> ist insbesondere auch unnötig langsam, da man es nur auf bereits initialisiertem Speicher verwenden kann. Ich hätte die so implementiert, dass die ein paar von random access Iteratoren zurückliefert, die man direkt und effizient mit entsprechenden Kostruktoren oder insert Methoden verwenden kann. Das würde auch viel besser zum Konzept passen da ansonsten Ranges meist durch ein Paar von Iteratoren ausgedrückt werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411414</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Fri, 01 Aug 2014 06:27:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Fri, 01 Aug 2014 07:45:24 GMT]]></title><description><![CDATA[<blockquote>
<p>std::iota ist insbesondere auch unnötig langsam, da man es nur auf bereits initialisiertem Speicher verwenden kann.</p>
</blockquote>
<p>Schon mal was von <code>back_inserter</code> gehört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411422</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 01 Aug 2014 07:45:24 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Fri, 01 Aug 2014 07:56:16 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<blockquote>
<p>std::iota ist insbesondere auch unnötig langsam, da man es nur auf bereits initialisiertem Speicher verwenden kann.</p>
</blockquote>
<p>Schon mal was von <code>back_inserter</code> gehört?</p>
</blockquote>
<p>back_inserter würde nur mit iota_n funktionieren (was es nicht gibt).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411425</guid><dc:creator><![CDATA[iota]]></dc:creator><pubDate>Fri, 01 Aug 2014 07:56:16 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Fri, 01 Aug 2014 09:10:01 GMT]]></title><description><![CDATA[<p>iota schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Schon mal was von <code>back_inserter</code> gehört?</p>
</blockquote>
<p>back_inserter würde nur mit iota_n funktionieren (was es nicht gibt).</p>
</blockquote>
<p>Und selbst ein <code>iota_n</code> mit <code>back_inserter</code> wäre langsamer, da bei jedem Aufruf die size neu gesetzt werden müsste. Eine Reallokation ließe sich zwar mit einem Aufruf von <code>reserve()</code> vermeiden, aber auch das ist unnötig umständlich und hässlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411444</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Fri, 01 Aug 2014 09:10:01 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Fri, 01 Aug 2014 10:00:00 GMT]]></title><description><![CDATA[<p>Das ist dann allerdings nicht <code>iota</code> 's Schuld sondern die von <code>vector</code> - du kannst das wiederholte Setzen von <code>size()</code> nicht vermeiden. Dann eher mit rohem Speicher und <code>raw_storage_iterator</code> .</p>
<p>Das mit den beiden Iteratoren ist übrigens bereits existent; siehe Boost.Range:</p>
<pre><code>#include &lt;boost/range/irange.hpp&gt;

int main()
{
	auto r = boost::irange(1, 20);

	std::vector&lt;int&gt; v(r.begin(), r.end());

	for (auto i : v)
		std::cout &lt;&lt; i &lt;&lt; ' ';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2411451</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411451</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 01 Aug 2014 10:00:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Fri, 01 Aug 2014 10:47:53 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Das ist dann allerdings nicht <code>iota</code> 's Schuld sondern die von <code>vector</code> - du kannst das wiederholte Setzen von <code>size()</code> nicht vermeiden.</p>
</blockquote>
<p>Doch kann ich. Wenn der Vector vorher bestimmen kann wie viele Einträge ich hinzufügen möchte, ist das nicht nötig. Dies leisten die Methoden</p>
<pre><code>vector::vector(InputIterator first, InputIterator last,
          const allocator_type&amp; alloc = allocator_type());
</code></pre>
<p>und</p>
<pre><code>iterator vector::insert (const_iterator position, InputIterator first, InputIterator last);
</code></pre>
<p>Wenn man ihnen random access iteratoren übergibt.</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Das mit den beiden Iteratoren ist übrigens bereits existent; siehe Boost.Range:</p>
<pre><code>#include &lt;boost/range/irange.hpp&gt;

int main()
{
	auto r = boost::irange(1, 20);
	
	std::vector&lt;int&gt; v(r.begin(), r.end());
	
	for (auto i : v)
		std::cout &lt;&lt; i &lt;&lt; ' ';
}
</code></pre>
</blockquote>
<p>Das ist in etw das was ich mir vorstelle, wobei Boost.Range mit dem Range-Concept noch einen Schritt weiter geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411454</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411454</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Fri, 01 Aug 2014 10:47:53 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Fri, 01 Aug 2014 11:08:33 GMT]]></title><description><![CDATA[<p>Um meine Position nochmals zu verdeutlichen. Neben den Performance- und Usability Aspekt finde ich das Interface von iota einfach semantisch fragwürdig. Was iota konzeptionell macht, ist einen range von integern zu generieren. Daher sollte es auch einen entsprechenden range liefern. Tatsächlich hat iota aber ein interface wie ein algorithmus der einen bestehenden range modifiziert. Das macht in meinen Augen überhaupt keinen Sinn. OK, mit std::fill existiert ein ähnlicher algorithmus, aber auch den finde ich recht unglücklich. Zudem sollte es dann eben aus Konsistenzgründen auch iota_n geben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411460</guid><dc:creator><![CDATA[TNA]]></dc:creator><pubDate>Fri, 01 Aug 2014 11:08:33 GMT</pubDate></item><item><title><![CDATA[Reply to C++11-Standard zu std::begin() und anderes on Sat, 02 Aug 2014 15:57:42 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Achso ok, danke. Da war also der Kern des Missverständnisses.</p>
<blockquote>
<p><strong>ghjkrofl</strong></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
<p>Sorry, ich hab die Operatoren für die assoziativen Container in der Referenz irgendwie übersehen...</p>
<p>ghjkrofl schrieb:</p>
<blockquote>
<p>Kennst do <a href="http://www.boost.org/doc/libs/release/libs/assign/doc/index.html" rel="nofollow">Boost.Assignment</a>? Du kannst RHS überladen.</p>
</blockquote>
<p>Kannte ich nicht, nein. Sieht super schick und super elegant aus.</p>
<p>camper schrieb:</p>
<blockquote>
<p>[...]</p>
</blockquote>
<p>Wow, daran hab ich nicht gedacht.</p>
<p>Danke an alle.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2411641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2411641</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Sat, 02 Aug 2014 15:57:42 GMT</pubDate></item></channel></rss>