<?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[Function Pointer Array compiliert mit GCC, mit VS2010 aber nicht.]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe hier einen Code, den gcc brav compiliert, aber VS 2010 nicht. Konkret<br />
geht es um die Zeile &quot;fptrArrayType fpntTab;&quot;, wo ein boost::multi_array Zeiger<br />
auf Methoden einer Klasse speichert.</p>
<pre><code class="language-cpp">template&lt;class T_DERIVED,class T_RET&gt;
class FSM
{
	typedef T_RET(T_DERIVED::*mtdPtr)();
	typedef boost::multi_array&lt;mtdPtr ,2&gt; fptrArrayType;

protected:
	fptrArrayType fpntTab;
}
</code></pre>
<p>Die Fehlermeldung von VS2010 ist etwas länger:</p>
<pre><code>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2216): error C2665: &quot;std::_Copy_impl&quot;: Durch keine der 2 Überladungen konnten alle Argumenttypen konvertiert werden.
2&gt;          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2182): kann '_OutIt std::_Copy_impl&lt;_InIt,_OutIt&gt;(_InIt,_InIt,_OutIt,std::input_iterator_tag,std::output_iterator_tag)' sein
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2191): oder &quot;_OutIt std::_Copy_impl&lt;_InIt,_OutIt&gt;(_InIt,_InIt,_OutIt,std::random_access_iterator_tag,std::random_access_iterator_tag)&quot;
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          bei Anpassung der Argumentliste '(boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::iterator_category_with_traversal&lt;Category,Traversal&gt;, boost::detail::iterator_category_with_traversal&lt;Category,Traversal&gt;)'
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              TPtr=const unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              TPtr=const unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              TPtr=unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              Category=std::input_iterator_tag,
2&gt;              Traversal=boost::random_access_traversal_tag
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              Category=std::input_iterator_tag,
2&gt;              Traversal=boost::random_access_traversal_tag
2&gt;          ]
2&gt;          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2227): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;_OutIt std::_Copy_impl&lt;_Iter,_OutIt&gt;(_InIt,_InIt,_OutIt,std::tr1::false_type)&quot;.
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _Iter=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array/view.hpp(321): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;_OutIt std::copy&lt;boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;,boost::detail::multi_array::array_iterator&lt;T,T *,NumDims,boost::detail::multi_array::sub_array&lt;T,1&gt;&gt;&gt;(_InIt,_InIt,_OutIt)&quot;.
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              T=unsigned int,
2&gt;              TPtr=const unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array/view.hpp(313): Bei der Kompilierung der  Klassen-template der boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt; &amp;boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt;::operator =(const boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt; &amp;)-Memberfunktion
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array.hpp(406): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt;&quot;.
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array.hpp(402): Bei der Kompilierung der  Klassen-template der boost::multi_array&lt;T,NumDims&gt; &amp;boost::multi_array&lt;T,NumDims&gt;::resize(const boost::detail::multi_array::extent_gen&lt;NumRanges&gt; &amp;)-Memberfunktion
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2,
2&gt;              NumRanges=2
2&gt;          ]
2&gt;          FSM.h(35): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::multi_array&lt;T,NumDims&gt;&quot;.
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2
2&gt;          ]
2&gt;          FSM.h(36): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;FSM&lt;T_DERIVED,T_RET&gt;&quot;.
</code></pre>
<p>Ideen, was da nicht stimmt? Der Fehler tritt übrigens _nur_ im Debug-Mode<br />
auf, nicht im Release.</p>
<p>Danke, lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289821/function-pointer-array-compiliert-mit-gcc-mit-vs2010-aber-nicht</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 21:54:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289821.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Jul 2011 13:30:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Function Pointer Array compiliert mit GCC, mit VS2010 aber nicht. on Wed, 13 Jul 2011 13:30:41 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe hier einen Code, den gcc brav compiliert, aber VS 2010 nicht. Konkret<br />
geht es um die Zeile &quot;fptrArrayType fpntTab;&quot;, wo ein boost::multi_array Zeiger<br />
auf Methoden einer Klasse speichert.</p>
<pre><code class="language-cpp">template&lt;class T_DERIVED,class T_RET&gt;
class FSM
{
	typedef T_RET(T_DERIVED::*mtdPtr)();
	typedef boost::multi_array&lt;mtdPtr ,2&gt; fptrArrayType;

protected:
	fptrArrayType fpntTab;
}
</code></pre>
<p>Die Fehlermeldung von VS2010 ist etwas länger:</p>
<pre><code>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2216): error C2665: &quot;std::_Copy_impl&quot;: Durch keine der 2 Überladungen konnten alle Argumenttypen konvertiert werden.
2&gt;          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2182): kann '_OutIt std::_Copy_impl&lt;_InIt,_OutIt&gt;(_InIt,_InIt,_OutIt,std::input_iterator_tag,std::output_iterator_tag)' sein
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2191): oder &quot;_OutIt std::_Copy_impl&lt;_InIt,_OutIt&gt;(_InIt,_InIt,_OutIt,std::random_access_iterator_tag,std::random_access_iterator_tag)&quot;
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          bei Anpassung der Argumentliste '(boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;, boost::detail::iterator_category_with_traversal&lt;Category,Traversal&gt;, boost::detail::iterator_category_with_traversal&lt;Category,Traversal&gt;)'
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              TPtr=const unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              TPtr=const unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              TPtr=unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              Category=std::input_iterator_tag,
2&gt;              Traversal=boost::random_access_traversal_tag
2&gt;          ]
2&gt;          and
2&gt;          [
2&gt;              Category=std::input_iterator_tag,
2&gt;              Traversal=boost::random_access_traversal_tag
2&gt;          ]
2&gt;          C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xutility(2227): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;_OutIt std::_Copy_impl&lt;_Iter,_OutIt&gt;(_InIt,_InIt,_OutIt,std::tr1::false_type)&quot;.
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _Iter=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array/view.hpp(321): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;_OutIt std::copy&lt;boost::detail::multi_array::array_iterator&lt;T,TPtr,NumDims,Reference&gt;,boost::detail::multi_array::array_iterator&lt;T,T *,NumDims,boost::detail::multi_array::sub_array&lt;T,1&gt;&gt;&gt;(_InIt,_InIt,_OutIt)&quot;.
2&gt;          with
2&gt;          [
2&gt;              _OutIt=boost::detail::multi_array::array_iterator&lt;unsigned int,unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::sub_array&lt;unsigned int,1&gt;&gt;,
2&gt;              T=unsigned int,
2&gt;              TPtr=const unsigned int *,
2&gt;              NumDims=boost::mpl::size_t&lt;2&gt;,
2&gt;              Reference=boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;,
2&gt;              _InIt=boost::detail::multi_array::array_iterator&lt;unsigned int,const unsigned int *,boost::mpl::size_t&lt;2&gt;,boost::detail::multi_array::const_sub_array&lt;unsigned int,1&gt;&gt;
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array/view.hpp(313): Bei der Kompilierung der  Klassen-template der boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt; &amp;boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt;::operator =(const boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt; &amp;)-Memberfunktion
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array.hpp(406): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::detail::multi_array::multi_array_view&lt;T,NumDims&gt;&quot;.
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2
2&gt;          ]
2&gt;          C:\windev\otherLib\boost_1_46_1\boost/multi_array.hpp(402): Bei der Kompilierung der  Klassen-template der boost::multi_array&lt;T,NumDims&gt; &amp;boost::multi_array&lt;T,NumDims&gt;::resize(const boost::detail::multi_array::extent_gen&lt;NumRanges&gt; &amp;)-Memberfunktion
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2,
2&gt;              NumRanges=2
2&gt;          ]
2&gt;          FSM.h(35): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::multi_array&lt;T,NumDims&gt;&quot;.
2&gt;          with
2&gt;          [
2&gt;              T=unsigned int,
2&gt;              NumDims=2
2&gt;          ]
2&gt;          FSM.h(36): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;FSM&lt;T_DERIVED,T_RET&gt;&quot;.
</code></pre>
<p>Ideen, was da nicht stimmt? Der Fehler tritt übrigens _nur_ im Debug-Mode<br />
auf, nicht im Release.</p>
<p>Danke, lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092324</guid><dc:creator><![CDATA[bts3]]></dc:creator><pubDate>Wed, 13 Jul 2011 13:30:41 GMT</pubDate></item><item><title><![CDATA[Reply to Function Pointer Array compiliert mit GCC, mit VS2010 aber nicht. on Thu, 14 Jul 2011 14:07:51 GMT]]></title><description><![CDATA[<p>Die Konstruktion wird von VS2010 mit 32 Bit im Debug-Mode nicht akzeptiert, aber der 32 Bit Release-Mode, sowie 64 Bit im Debug- und Release-Mode sagen, es ist okay.</p>
<p>..insofern wird das jetzt ignoriert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2092766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2092766</guid><dc:creator><![CDATA[bts3]]></dc:creator><pubDate>Thu, 14 Jul 2011 14:07:51 GMT</pubDate></item></channel></rss>