<?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[boost::variant reimplementieren]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich reimplementiere gerade ein paar Sachen der <code>STD</code> und von <code>boost</code> . Nun, als ich soeben mit <code>boost</code> :: <code>variant</code> beginnen wollte, komme ich nicht vom Fleck. Wie arbeitet es intern?</p>
<p>MfG, EOutOfResources</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284867/boost-variant-reimplementieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 17:03:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284867.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Apr 2011 06:18:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::variant reimplementieren on Sun, 10 Apr 2011 06:18:13 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich reimplementiere gerade ein paar Sachen der <code>STD</code> und von <code>boost</code> . Nun, als ich soeben mit <code>boost</code> :: <code>variant</code> beginnen wollte, komme ich nicht vom Fleck. Wie arbeitet es intern?</p>
<p>MfG, EOutOfResources</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046988</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 10 Apr 2011 06:18:13 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant reimplementieren on Sun, 10 Apr 2011 06:20:24 GMT]]></title><description><![CDATA[<p>is doch opensource</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046989</guid><dc:creator><![CDATA[düdüdübdüdüdüüüüü]]></dc:creator><pubDate>Sun, 10 Apr 2011 06:20:24 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant reimplementieren on Sun, 10 Apr 2011 08:10:55 GMT]]></title><description><![CDATA[<p>Uh, das sieht ja schrecklich aus. Ich dachte, die nutzen irgend einen Metaprogrammierungs-Trick.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046998</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Sun, 10 Apr 2011 08:10:55 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant reimplementieren on Sun, 10 Apr 2011 11:15:15 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Ich dachte, die nutzen irgend einen Metaprogrammierungs-Trick.</p>
</blockquote>
<p>Tun sie garantiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047065</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 Apr 2011 11:15:15 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant reimplementieren on Sun, 10 Apr 2011 20:47:28 GMT]]></title><description><![CDATA[<p>Ich kenne boost::variant nicht, ist das sowas ähnliches wie boost::any?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047291</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047291</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 10 Apr 2011 20:47:28 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant reimplementieren on Sun, 10 Apr 2011 20:51:58 GMT]]></title><description><![CDATA[<p>Nicht wirklich - es ist eher die C++-Version einer union.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047293</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sun, 10 Apr 2011 20:51:58 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant reimplementieren on Mon, 11 Apr 2011 06:05:47 GMT]]></title><description><![CDATA[<p>Im Prinzip benutzen sie ein <code>char</code> -Array, desses Größe die Maximalgröße aller Typen im Variant ist und dessen Alignment ebenfalls dem maximalen Alignment aller beteiligten Typen entspricht. Dahinein werden dann die entsprechenden Objekte konstruiert.<br />
Von welchem Typ das aktuelle Objekt ist, merkt man sich mit einer simplen Indexvariable (die den Index in der Typliste speichert), deren Typ abhängt von der Zahl der Typen ist (normalerweise <code>unsigned char</code> , bei mehr als 256 Typen <code>unsigned int</code> ).<br />
Dabei wird natürlich auch viel Metaprogrammierung benutzt.<br />
Das Visitor-Pattern ist schlussendlich nur ein hinter viel Metaprogrammierung verstecktes <code>switch</code> auf den Typindex.</p>
<p>Das sollte für den Anfang erstmal reichen. Danach kommen dann noch Implementierungsfeinheiten z.B. bezüglich der Never-Empty-Garantie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2047337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2047337</guid><dc:creator><![CDATA[ipsec]]></dc:creator><pubDate>Mon, 11 Apr 2011 06:05:47 GMT</pubDate></item></channel></rss>