<?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]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte gerade boost::variant mit dem typen std::uint32_t und std::uint64_t benutzen.<br />
wenn ich jetzt aber eine zahl vom typ std::uint32_t bzw. std::uint64_t zuweisen möchte, kracht es.</p>
<pre><code class="language-cpp">boost::variant&lt;std::uint32_t, std::uint64_t&gt; v;

std::uint32_t t = 32;

v = t; // hier kracht es
</code></pre>
<p>die fehlermeldung lautet:</p>
<pre><code>/usr/include/boost/variant/variant.hpp: In Elementfunktion »void boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::convert_construct(T&amp;, int, mpl_::false_) [with T = const int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_, mpl_::false_ = mpl_::bool_&lt;false&gt;]«:
/usr/include/boost/variant/variant.hpp:1373:9:    instanziiert von »boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::variant(const T&amp;) [with T = int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_]«
/usr/include/boost/variant/variant.hpp:1616:29:    instanziiert von »void boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::assign(const T&amp;) [with T = int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_]«
/usr/include/boost/variant/variant.hpp:1626:9:    instanziiert von »boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;&amp; boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::operator=(const T&amp;) [with T = int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_, boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt; = boost::variant&lt;unsigned int, long unsigned int&gt;]«
/home/.../Blender_File.cpp:129:78:   instanziiert von hier
/usr/include/boost/variant/variant.hpp:1300:9: Fehler: Aufruf des überladenen »initialize(void*, const int&amp;)« ist mehrdeutig
/usr/include/boost/variant/variant.hpp:1300:9: Anmerkung: Kandidaten sind:
/usr/include/boost/variant/detail/initializer.hpp:89:24: Anmerkung: static int boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::initialize(void*, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T) [with BaseIndexPair = boost::mpl::pair&lt;boost::detail::variant::make_initializer_node::apply&lt;boost::mpl::pair&lt;boost::detail::variant::initializer_root, mpl_::int_&lt;0&gt; &gt;, boost::mpl::l_iter&lt;boost::mpl::list2&lt;unsigned int, long unsigned int&gt; &gt; &gt;::initializer_node, mpl_::int_&lt;1&gt; &gt;, Iterator = boost::mpl::l_iter&lt;boost::mpl::list1&lt;long unsigned int&gt; &gt;, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T = const long unsigned int]
/usr/include/boost/variant/detail/initializer.hpp:89:24: Anmerkung: static int boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::initialize(void*, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T) [with BaseIndexPair = boost::mpl::pair&lt;boost::detail::variant::initializer_root, mpl_::int_&lt;0&gt; &gt;, Iterator = boost::mpl::l_iter&lt;boost::mpl::list2&lt;unsigned int, long unsigned int&gt; &gt;, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T = const unsigned int]
</code></pre>
<p>wisst ihr, ob man das nicht kann, also die beiden typen in eienm variant zu benutzten und gibt es hierfür eine möglichkeit es zu tun?</p>
<p>danke schon mal</p>
<p>vario-500</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/299093/boost-variant</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 11:59:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299093.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Feb 2012 13:55:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 13:55:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich wollte gerade boost::variant mit dem typen std::uint32_t und std::uint64_t benutzen.<br />
wenn ich jetzt aber eine zahl vom typ std::uint32_t bzw. std::uint64_t zuweisen möchte, kracht es.</p>
<pre><code class="language-cpp">boost::variant&lt;std::uint32_t, std::uint64_t&gt; v;

std::uint32_t t = 32;

v = t; // hier kracht es
</code></pre>
<p>die fehlermeldung lautet:</p>
<pre><code>/usr/include/boost/variant/variant.hpp: In Elementfunktion »void boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::convert_construct(T&amp;, int, mpl_::false_) [with T = const int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_, mpl_::false_ = mpl_::bool_&lt;false&gt;]«:
/usr/include/boost/variant/variant.hpp:1373:9:    instanziiert von »boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::variant(const T&amp;) [with T = int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_]«
/usr/include/boost/variant/variant.hpp:1616:29:    instanziiert von »void boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::assign(const T&amp;) [with T = int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_]«
/usr/include/boost/variant/variant.hpp:1626:9:    instanziiert von »boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;&amp; boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt;::operator=(const T&amp;) [with T = int, T0_ = unsigned int, T1 = long unsigned int, T2 = boost::detail::variant::void_, T3 = boost::detail::variant::void_, T4 = boost::detail::variant::void_, T5 = boost::detail::variant::void_, T6 = boost::detail::variant::void_, T7 = boost::detail::variant::void_, T8 = boost::detail::variant::void_, T9 = boost::detail::variant::void_, T10 = boost::detail::variant::void_, T11 = boost::detail::variant::void_, T12 = boost::detail::variant::void_, T13 = boost::detail::variant::void_, T14 = boost::detail::variant::void_, T15 = boost::detail::variant::void_, T16 = boost::detail::variant::void_, T17 = boost::detail::variant::void_, T18 = boost::detail::variant::void_, T19 = boost::detail::variant::void_, boost::variant&lt;T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19&gt; = boost::variant&lt;unsigned int, long unsigned int&gt;]«
/home/.../Blender_File.cpp:129:78:   instanziiert von hier
/usr/include/boost/variant/variant.hpp:1300:9: Fehler: Aufruf des überladenen »initialize(void*, const int&amp;)« ist mehrdeutig
/usr/include/boost/variant/variant.hpp:1300:9: Anmerkung: Kandidaten sind:
/usr/include/boost/variant/detail/initializer.hpp:89:24: Anmerkung: static int boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::initialize(void*, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T) [with BaseIndexPair = boost::mpl::pair&lt;boost::detail::variant::make_initializer_node::apply&lt;boost::mpl::pair&lt;boost::detail::variant::initializer_root, mpl_::int_&lt;0&gt; &gt;, boost::mpl::l_iter&lt;boost::mpl::list2&lt;unsigned int, long unsigned int&gt; &gt; &gt;::initializer_node, mpl_::int_&lt;1&gt; &gt;, Iterator = boost::mpl::l_iter&lt;boost::mpl::list1&lt;long unsigned int&gt; &gt;, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T = const long unsigned int]
/usr/include/boost/variant/detail/initializer.hpp:89:24: Anmerkung: static int boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::initialize(void*, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T) [with BaseIndexPair = boost::mpl::pair&lt;boost::detail::variant::initializer_root, mpl_::int_&lt;0&gt; &gt;, Iterator = boost::mpl::l_iter&lt;boost::mpl::list2&lt;unsigned int, long unsigned int&gt; &gt;, boost::detail::variant::make_initializer_node::apply&lt;BaseIndexPair, Iterator&gt;::initializer_node::param_T = const unsigned int]
</code></pre>
<p>wisst ihr, ob man das nicht kann, also die beiden typen in eienm variant zu benutzten und gibt es hierfür eine möglichkeit es zu tun?</p>
<p>danke schon mal</p>
<p>vario-500</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176032</guid><dc:creator><![CDATA[vario-500]]></dc:creator><pubDate>Thu, 02 Feb 2012 13:55:35 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 14:05:23 GMT]]></title><description><![CDATA[<p>Ich wüsste jetzt nicht, wo der Fehler ist. Allerdings frage ich mich schon, warum man so etwas wie variant&lt;uint32,uint64&gt; braucht. Tut es uint64 nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176035</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 02 Feb 2012 14:05:23 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 14:25:12 GMT]]></title><description><![CDATA[<p>ich lese einen pointer aus einer datei, der entweder 32 oder 64 bit haben kann, aber stimmt, ich könnte den 32 bit pointer ja trotzdem in std::uint64_t speichern. ist ja dann egal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176038</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176038</guid><dc:creator><![CDATA[vario-500]]></dc:creator><pubDate>Thu, 02 Feb 2012 14:25:12 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 14:26:12 GMT]]></title><description><![CDATA[<p>So wie ich die Fehlermeldung deute, liegt es daran das ein uint32_t implizit in einen uint64_t umgewandelt werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176039</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Thu, 02 Feb 2012 14:26:12 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 15:01:00 GMT]]></title><description><![CDATA[<p>Ist das auch ganz sicher der passende Code zu den Fehlermeldungen? Ich frage mich nämlich, wo das &quot;const int&amp;&quot; aus der Fehlermeldung herkommen soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176050</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 02 Feb 2012 15:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 15:15:03 GMT]]></title><description><![CDATA[<p>Von:</p>
<pre><code>Anmerkung: Kandidaten sind:
... param_T = const long unsigned int
... param_T = const unsigned int
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2176055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176055</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Thu, 02 Feb 2012 15:15:03 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 15:53:23 GMT]]></title><description><![CDATA[<p>pyhax schrieb:</p>
<blockquote>
<p>Von:</p>
<pre><code>Anmerkung: Kandidaten sind:
... param_T = const long unsigned int
... param_T = const unsigned int
</code></pre>
</blockquote>
<p>Genau dadrüber steht noch</p>
<blockquote>
<p>... Aufruf des überladenen »initialize(void*, const int&amp;)« ist mehrdeutig</p>
</blockquote>
<p>Und das const int&amp; da sagt mir, dass als zweiter Parameter ein Lvalue vom Typ const signed int verwendet wurde. Es gibt also keinen &quot;perfekten Match&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176074</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 02 Feb 2012 15:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 16:22:35 GMT]]></title><description><![CDATA[<p>jetzt geht es gerade auf einmal. ich weiß nicht, was ich vorher falsch gemacht hab.</p>
<pre><code class="language-cpp">#include &lt;boost/variant&gt;
#include &lt;cstdint&gt;

int main(int argc, char** argv) 
{
	boost::variant&lt;std::uint32_t, std::uint64_t&gt; v;
	std::uint32_t ui = 32;
	v = ui;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2176087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176087</guid><dc:creator><![CDATA[vario-500]]></dc:creator><pubDate>Thu, 02 Feb 2012 16:22:35 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 18:49:51 GMT]]></title><description><![CDATA[<p>vario-500 schrieb:</p>
<blockquote>
<p>ich lese einen pointer aus einer datei, der entweder 32 oder 64 bit haben kann, aber stimmt, ich könnte den 32 bit pointer ja trotzdem in std::uint64_t speichern. ist ja dann egal</p>
</blockquote>
<p>Was macht man denn mit Pointern, die man aus einer Datei eingelesen hat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176141</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 02 Feb 2012 18:49:51 GMT</pubDate></item><item><title><![CDATA[Reply to boost::variant on Thu, 02 Feb 2012 18:56:47 GMT]]></title><description><![CDATA[<p>vario, das ist ja klar, da du jetzt explizit eine Variable vom Typ uint32_t übergibst. Dein Variant kann den Typ aufnehmen, also klappt das.</p>
<p>Dein v = 32 klappt deshalb nicht, weil die Konstante 32 vom Compiler erstmal den Typ int bekommt, daher steht im Fehler auch (const int &amp;).<br />
int kann aber implizit in sowohl uint32_t als auch uint64_t gecastet werden, weshalb sich der Compiler nicht entscheiden kann.</p>
<p>Eine Lösung wäre, es explizit anzugeben:<br />
v = static_cast<a href="std::uint32%5C_t" rel="nofollow">std::uint32\_t</a>(32);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2176143</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2176143</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Thu, 02 Feb 2012 18:56:47 GMT</pubDate></item></channel></rss>