<?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[Funktionspointer in std::map&amp;lt;&amp;gt; speichern]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
const std::map&lt;std::string, T(*)(const T&amp; )&gt; math_parser&lt;T&gt;::functions = {
    {std::string(&quot;SQRT&quot;), (T(*)(const T&amp; ))&amp;std::sqrt&lt;T&gt;}
};
</code></pre>
<p>Ich caste den Pointer, weil es mehrere Überladungen der Funktion gibt und gebe explizit den Template-Parameter an. Warum will das dann immer noch nicht kompilieren und wie mache ich es richtig?</p>
<p>Wenn ich einen komplexen Mathe-Parser instantziiere, fliegt mir das Programm um die Ohren:</p>
<pre><code>/usr/include/c++/6.2.1/complex:872: error: invalid operands to binary expression ('std::complex&lt;long double&gt;' and 'std::complex&lt;long double&gt;')
          return complex&lt;_Tp&gt;(__t, __y &lt; _Tp() ? -__t : __t);
                                   ~~~ ^ ~~~~~
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/340126/funktionspointer-in-std-map-lt-gt-speichern</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 10:46:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340126.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Oct 2016 17:02:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionspointer in std::map&amp;lt;&amp;gt; speichern on Thu, 20 Oct 2016 17:02:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
const std::map&lt;std::string, T(*)(const T&amp; )&gt; math_parser&lt;T&gt;::functions = {
    {std::string(&quot;SQRT&quot;), (T(*)(const T&amp; ))&amp;std::sqrt&lt;T&gt;}
};
</code></pre>
<p>Ich caste den Pointer, weil es mehrere Überladungen der Funktion gibt und gebe explizit den Template-Parameter an. Warum will das dann immer noch nicht kompilieren und wie mache ich es richtig?</p>
<p>Wenn ich einen komplexen Mathe-Parser instantziiere, fliegt mir das Programm um die Ohren:</p>
<pre><code>/usr/include/c++/6.2.1/complex:872: error: invalid operands to binary expression ('std::complex&lt;long double&gt;' and 'std::complex&lt;long double&gt;')
          return complex&lt;_Tp&gt;(__t, __y &lt; _Tp() ? -__t : __t);
                                   ~~~ ^ ~~~~~
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2512294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2512294</guid><dc:creator><![CDATA[mil]]></dc:creator><pubDate>Thu, 20 Oct 2016 17:02:01 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer in std::map&amp;lt;&amp;gt; speichern on Thu, 20 Oct 2016 17:34:03 GMT]]></title><description><![CDATA[<p>Funktioniert ohne Templateargument (ist schließlich kein Funktionstemplate) und sogar ohne cast prima: <a href="https://ideone.com/fdE2tO" rel="nofollow">https://ideone.com/fdE2tO</a>.<br />
Vielleicht wäre std::function die bessere wahl? Das gibt dir die Möglichkeit, das ganze mit Methoden und auch Lambdaausdrücken zu machen. Kommt aber darauf an, was du damit vorhast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2512297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2512297</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Thu, 20 Oct 2016 17:34:03 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer in std::map&amp;lt;&amp;gt; speichern on Thu, 20 Oct 2016 17:40:47 GMT]]></title><description><![CDATA[<p>Nein, ich mein eher <a href="http://ideone.com/s3ihMy" rel="nofollow">sowas</a>.<br />
Als Template-Ausdruck funktioniert das nicht, sobald man versucht math_parser::evaluate() aufzurufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2512298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2512298</guid><dc:creator><![CDATA[mil]]></dc:creator><pubDate>Thu, 20 Oct 2016 17:40:47 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer in std::map&amp;lt;&amp;gt; speichern on Thu, 20 Oct 2016 18:20:44 GMT]]></title><description><![CDATA[<p>Die Templateargumente weg und schon funktioniert's: <a href="http://ideone.com/ahHUkm" rel="nofollow">http://ideone.com/ahHUkm</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2512303</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2512303</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Thu, 20 Oct 2016 18:20:44 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer in std::map&amp;lt;&amp;gt; speichern on Thu, 20 Oct 2016 19:29:08 GMT]]></title><description><![CDATA[<p>Ah, danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2512317</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2512317</guid><dc:creator><![CDATA[mil]]></dc:creator><pubDate>Thu, 20 Oct 2016 19:29:08 GMT</pubDate></item></channel></rss>