<?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[std:.function vergleichen]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>gibt es eine Möglichkeit, <code>std::function</code> Objekte zu vergleichen und eindeutig zu identifizieren? Ich möchte ein Publisher/Subscriber mit <code>std::function</code> implementieren, aber es scheitert im Moment daran, dass sich ein Subscriber nicht austragen kann, weil einzelne <code>std::function</code> Objekte nicht identifizierbar (bzw. untereinander vergleichbar) sind. Der <code>operator==</code> prüft nur gegen <code>nullptr</code> , kann aber nicht feststellen, ob zwei <code>std::function</code> Objekte die gleiche Funktion/Methode enthalten. Damit stellen sich zwei Probleme:</p>
<ol>
<li>ich kann nicht prüfen, ob ein sich Duplikat bereits im vector befindet</li>
<li>ich kann kein Objekte im vector eindeutig identifizieren, um sie zu entfernen.</li>
</ol>
<p><a href="http://stackoverflow.com/questions/20833453/comparing-stdfunctions-for-equality" rel="nofollow">Hier</a> ist eine kurze Erläuterung, warum das mit <code>boost::function</code> nicht geht.</p>
<p>Kennt jemand vielleicht doch eine Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/340355/std-function-vergleichen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 05:38:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340355.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 Nov 2016 12:51:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std:.function vergleichen on Wed, 02 Nov 2016 12:51:43 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>gibt es eine Möglichkeit, <code>std::function</code> Objekte zu vergleichen und eindeutig zu identifizieren? Ich möchte ein Publisher/Subscriber mit <code>std::function</code> implementieren, aber es scheitert im Moment daran, dass sich ein Subscriber nicht austragen kann, weil einzelne <code>std::function</code> Objekte nicht identifizierbar (bzw. untereinander vergleichbar) sind. Der <code>operator==</code> prüft nur gegen <code>nullptr</code> , kann aber nicht feststellen, ob zwei <code>std::function</code> Objekte die gleiche Funktion/Methode enthalten. Damit stellen sich zwei Probleme:</p>
<ol>
<li>ich kann nicht prüfen, ob ein sich Duplikat bereits im vector befindet</li>
<li>ich kann kein Objekte im vector eindeutig identifizieren, um sie zu entfernen.</li>
</ol>
<p><a href="http://stackoverflow.com/questions/20833453/comparing-stdfunctions-for-equality" rel="nofollow">Hier</a> ist eine kurze Erläuterung, warum das mit <code>boost::function</code> nicht geht.</p>
<p>Kennt jemand vielleicht doch eine Lösung?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513881</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513881</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 02 Nov 2016 12:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to std:.function vergleichen on Wed, 02 Nov 2016 12:59:04 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Kennt jemand vielleicht doch eine Lösung?</p>
</blockquote>
<p>Nicht direkt. boost::signals2?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513884</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Wed, 02 Nov 2016 12:59:04 GMT</pubDate></item><item><title><![CDATA[Reply to std:.function vergleichen on Wed, 02 Nov 2016 12:59:17 GMT]]></title><description><![CDATA[<p>Speicher halt rohe Funktionszeiger, wenn du das so machen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513885</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513885</guid><dc:creator><![CDATA[qwer]]></dc:creator><pubDate>Wed, 02 Nov 2016 12:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to std:.function vergleichen on Wed, 02 Nov 2016 13:13:21 GMT]]></title><description><![CDATA[<p>Bei boost::signals2 muss ich mal gucken, wie sich das genau verhält. Ich habe den Fall, dass sich eSubscriber während der Benachrichtigung aus der Liste der Subscriber austragen, das muss boost::signals2 verkraften.</p>
<p>Rohe Pointer speichere ich jetzt, davon möchte ich aber weg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513889</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513889</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 02 Nov 2016 13:13:21 GMT</pubDate></item><item><title><![CDATA[Reply to std:.function vergleichen on Wed, 02 Nov 2016 13:24:30 GMT]]></title><description><![CDATA[<p>so einfach ist es nicht mit std::function alleine - u.a. auch deshalb, weil du ja ganz einfach neue std::functions mit std::bind erzeugen kannst. niemand wird function jemals ein equalitycomparable verpassen.</p>
<p>das gesagt hast du natürlich noch andere lösungen, wie etwa boost signal (schon erwähnt), oder du implementierst dir einen std::function-wrapper.</p>
<p>generell empfände ich es wohl eher als auch better practice, etwas in der art eines weak_ptrs rund um ein std::function objekt zu haben (das man vor einem callback noch auf die existenz des callback-handlers hin abfragen kann).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513894</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513894</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Wed, 02 Nov 2016 13:24:30 GMT</pubDate></item><item><title><![CDATA[Reply to std:.function vergleichen on Wed, 02 Nov 2016 13:32:56 GMT]]></title><description><![CDATA[<p>Oder bei dir halt irgendwie ne eigene Function-Klasse, die intern einen Funktionszeiger hält und du dann die entsprechenden Vergleichsoperatoren definieren kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513898</guid><dc:creator><![CDATA[qwer]]></dc:creator><pubDate>Wed, 02 Nov 2016 13:32:56 GMT</pubDate></item></channel></rss>