<?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[kleinster Datentyp für Konstante -&amp;gt; mpl -&amp;gt; Fehler]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte für Zahlen in einem bestimmten Bereich den Besten Datentyp finden. Dies möchte ich per boost::mpl realisieren.<br />
Mein Ansatz:</p>
<pre><code class="language-cpp">template&lt;long long lMin,long long lMax&gt;
	class CGT
{
private:
	typedef mpl::vector&lt;
			mpl::vector&lt;mpl::integral_c&lt;long long,CHAR_MIN&gt;,
				mpl::integral_c&lt;long long,CHAR_MAX&gt;,
				char&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,UCHAR_MAX&gt;,
				unsigned char&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,SHRT_MIN&gt;,
				mpl::integral_c&lt;long long,SHRT_MAX&gt;,
				short&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,USHRT_MAX&gt;,
				unsigned short&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,INT_MIN&gt;,
				mpl::integral_c&lt;long long,INT_MAX&gt;,
				int&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,UINT_MAX&gt;,
				unsigned int&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,LONG_MIN&gt;,
				mpl::integral_c&lt;long long,LONG_MAX&gt;,
				long&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,ULONG_MAX&gt;,
				unsigned long&gt;  &gt;IntegralTypes_t;

	typedef typename mpl::find_if&lt;IntegralTypes_t,
		typename mpl::and_&lt;
			typename mpl::less_equal&lt;
				typename mpl::at_c&lt;typename mpl::_1,0&gt;::type,
					mpl::integral_c&lt;long long,lMin&gt; &gt;,
			typename mpl::greater_equal&lt;
				typename mpl::at_c&lt;typename mpl::_1,1&gt;::type,
					mpl::integral_c&lt;long long,lMax&gt; &gt; &gt; &gt;::type
						pIntegralType_t;

public:
	typedef typename mpl::at_c&lt;typename mpl::deref&lt;pIntegralType_t&gt;::type,2&gt;::type type;	
};
</code></pre>
<p>Leider klappt dies so nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Bei der Instanzierung meckert der Compiler (VC++ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /> bei dem Code &quot;typename mpl::at_c&lt;typename mpl::_1,1&gt;&quot; mit dem Fehler &quot;<br />
20&gt;C:\Boost\include\boost-1_34_1\boost/mpl/next_prior.hpp(31) : error C2039: 'next' : is not a member of 'boost::mpl::void_'&quot;. &quot;typename mpl::at_c&lt;typename mpl::_1,0&gt;&quot; klappt dagegen wunderbar.</p>
<p>Was ist falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195502/kleinster-datentyp-für-konstante-gt-mpl-gt-fehler</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 03:25:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195502.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 18 Oct 2007 12:02:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kleinster Datentyp für Konstante -&amp;gt; mpl -&amp;gt; Fehler on Thu, 18 Oct 2007 12:02:53 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte für Zahlen in einem bestimmten Bereich den Besten Datentyp finden. Dies möchte ich per boost::mpl realisieren.<br />
Mein Ansatz:</p>
<pre><code class="language-cpp">template&lt;long long lMin,long long lMax&gt;
	class CGT
{
private:
	typedef mpl::vector&lt;
			mpl::vector&lt;mpl::integral_c&lt;long long,CHAR_MIN&gt;,
				mpl::integral_c&lt;long long,CHAR_MAX&gt;,
				char&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,UCHAR_MAX&gt;,
				unsigned char&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,SHRT_MIN&gt;,
				mpl::integral_c&lt;long long,SHRT_MAX&gt;,
				short&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,USHRT_MAX&gt;,
				unsigned short&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,INT_MIN&gt;,
				mpl::integral_c&lt;long long,INT_MAX&gt;,
				int&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,UINT_MAX&gt;,
				unsigned int&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,LONG_MIN&gt;,
				mpl::integral_c&lt;long long,LONG_MAX&gt;,
				long&gt;,
			mpl::vector&lt;mpl::integral_c&lt;long long,0&gt;,
				mpl::integral_c&lt;long long,ULONG_MAX&gt;,
				unsigned long&gt;  &gt;IntegralTypes_t;

	typedef typename mpl::find_if&lt;IntegralTypes_t,
		typename mpl::and_&lt;
			typename mpl::less_equal&lt;
				typename mpl::at_c&lt;typename mpl::_1,0&gt;::type,
					mpl::integral_c&lt;long long,lMin&gt; &gt;,
			typename mpl::greater_equal&lt;
				typename mpl::at_c&lt;typename mpl::_1,1&gt;::type,
					mpl::integral_c&lt;long long,lMax&gt; &gt; &gt; &gt;::type
						pIntegralType_t;

public:
	typedef typename mpl::at_c&lt;typename mpl::deref&lt;pIntegralType_t&gt;::type,2&gt;::type type;	
};
</code></pre>
<p>Leider klappt dies so nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /> Bei der Instanzierung meckert der Compiler (VC++ <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="8)"
      alt="😎"
    /> bei dem Code &quot;typename mpl::at_c&lt;typename mpl::_1,1&gt;&quot; mit dem Fehler &quot;<br />
20&gt;C:\Boost\include\boost-1_34_1\boost/mpl/next_prior.hpp(31) : error C2039: 'next' : is not a member of 'boost::mpl::void_'&quot;. &quot;typename mpl::at_c&lt;typename mpl::_1,0&gt;&quot; klappt dagegen wunderbar.</p>
<p>Was ist falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387828</guid><dc:creator><![CDATA[boosta]]></dc:creator><pubDate>Thu, 18 Oct 2007 12:02:53 GMT</pubDate></item></channel></rss>