<?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::Thread und member-Funktionen]]></title><description><![CDATA[<p>Hallo,<br />
Ich schreibe gerade mein erstes Programm mit Benutzung von Boost::Thread.<br />
Dabei wollte ich eine member-Funktion aus einer anderen heraus als Thread starten. Etwa so:</p>
<pre><code class="language-cpp">#include &lt;boost/thread/thread.hpp&gt;

class A
{
public:
        void funcA()
        {
                boost::thread th(funcB);
        }
        void funcB()
        {
                //...
        }
};

int main()
{
        A a;
        a.funcA();
        return 0;
}
</code></pre>
<p>Ich habe etwas im Internet Recherchiert und herausgefunden, dass das nur mit statischen Funktionen geht:</p>
<pre><code class="language-cpp">#include &lt;boost/thread/thread.hpp&gt;

class A
{
public:
        void funcA()
        {
                boost::thread th(funcB);
        }
        static void funcB()
        {
                //...
        }
};

int main()
{
        A a;
        a.funcA();
        return 0;
}
</code></pre>
<p>Aber bei statischen Funktionen gibt es ja logischerweise keinen this-Zeiger.<br />
Wie löst man nun folgendes Problem?</p>
<pre><code class="language-cpp">#include &lt;boost/thread/thread.hpp&gt;

class A
{
private:
        int i;
public:
        void funcA()
        {
                i=1;
                boost::thread th(funcB);
        }
        void funcB()
        {
                i++;
        }
};

int main()
{
        A a;
        a.funcA();
        return 0;
}
</code></pre>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295070/boost-thread-und-member-funktionen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 13:34:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295070.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 06 Nov 2011 18:14:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 18:14:33 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich schreibe gerade mein erstes Programm mit Benutzung von Boost::Thread.<br />
Dabei wollte ich eine member-Funktion aus einer anderen heraus als Thread starten. Etwa so:</p>
<pre><code class="language-cpp">#include &lt;boost/thread/thread.hpp&gt;

class A
{
public:
        void funcA()
        {
                boost::thread th(funcB);
        }
        void funcB()
        {
                //...
        }
};

int main()
{
        A a;
        a.funcA();
        return 0;
}
</code></pre>
<p>Ich habe etwas im Internet Recherchiert und herausgefunden, dass das nur mit statischen Funktionen geht:</p>
<pre><code class="language-cpp">#include &lt;boost/thread/thread.hpp&gt;

class A
{
public:
        void funcA()
        {
                boost::thread th(funcB);
        }
        static void funcB()
        {
                //...
        }
};

int main()
{
        A a;
        a.funcA();
        return 0;
}
</code></pre>
<p>Aber bei statischen Funktionen gibt es ja logischerweise keinen this-Zeiger.<br />
Wie löst man nun folgendes Problem?</p>
<pre><code class="language-cpp">#include &lt;boost/thread/thread.hpp&gt;

class A
{
private:
        int i;
public:
        void funcA()
        {
                i=1;
                boost::thread th(funcB);
        }
        void funcB()
        {
                i++;
        }
};

int main()
{
        A a;
        a.funcA();
        return 0;
}
</code></pre>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141282</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 06 Nov 2011 18:14:33 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 18:18:51 GMT]]></title><description><![CDATA[<p>Wenn du C++11 hast, würde ich eine Lambda nehmen:</p>
<pre><code class="language-cpp">boost::thread t([this] () { funcB(); });
</code></pre>
<p>Wenn nicht, dann boost::bind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141286</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 18:18:51 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 18:31:44 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Wenn du C++11 hast, würde ich eine Lambda nehmen:</p>
<pre><code class="language-cpp">boost::thread t([this] () { funcB(); });
</code></pre>
<p>Wenn nicht, dann boost::bind.</p>
</blockquote>
<p>Ich sollte die aktuelle Version vom g++ haben, könntest du vielleicht ein Beispiel machen?</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141296</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 06 Nov 2011 18:31:44 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 18:32:43 GMT]]></title><description><![CDATA[<p>Das war doch ein Beispiel. Oder meinst du mit boost::bind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141299</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141299</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 18:32:43 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 18:53:54 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Wenn du C++11 hast, würde ich eine Lambda nehmen</p>
</blockquote>
<p>Manche Anwendungen von Lambdas sollte man bleiben lassen.<br />
Dies ist ein klarer Fall für <code>std::bind(&amp;A::funcB, this)</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141311</guid><dc:creator><![CDATA[kopfschüttler]]></dc:creator><pubDate>Sun, 06 Nov 2011 18:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 18:55:33 GMT]]></title><description><![CDATA[<p>Lambdas sind kürzer, besser lesbarer und weniger fehleranfällig als bind. Insbesondere, wenn dann die placeholders ins Spiel kommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141313</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 18:55:33 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:00:38 GMT]]></title><description><![CDATA[<p>kopfschüttler schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Wenn du C++11 hast, würde ich eine Lambda nehmen</p>
</blockquote>
<p>Manche Anwendungen von Lambdas sollte man bleiben lassen.<br />
Dies ist ein klarer Fall für <code>std::bind(&amp;A::funcB, this)</code> .</p>
</blockquote>
<p>Danke für die Antwort, jetzt sollte es funktionieren <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>mfg D3lta</p>
<p>P.S.: Es muss <strong>boost</strong>::bind() heißen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141319</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:00:38 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:01:35 GMT]]></title><description><![CDATA[<p>Sobald du Placeholder verwendest, wirst du bereuhen, bind verwendet zu haben. Versprochen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141321</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141321</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:04:02 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Insbesondere, wenn dann die placeholders ins Spiel kommen**, ist bind massiv lesbarer**.</p>
</blockquote>
<p>FTFY.<br />
Sobald das Lambda Parameter entgegen nimmt hat hat die Lesbarkeit verloren. Dann ist bind kürzer, besser lesbar und weniger fehleranfällig. Nur weil du es nicht verstanden hast, muss es nicht schlecht sein.</p>
<p>PS: std::bind ist C++11, wie die Lambdas.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141323</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141323</guid><dc:creator><![CDATA[kopfschüttler]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:04:02 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:06:16 GMT]]></title><description><![CDATA[<p>rofl</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141326</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:06:16 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:08:30 GMT]]></title><description><![CDATA[<p>Was sind denn Placeholders?<br />
Und wie kann ich meiner Funktion Argumente übergeben?</p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141329</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:08:30 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:10:17 GMT]]></title><description><![CDATA[<p>gnihihi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141330</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:47:05 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>gnihihi</p>
</blockquote>
<p>Was ist? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141344</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:47:05 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 19:50:08 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22268">@pi</a>: Was ist da wohl schöner?</p>
<pre><code class="language-cpp">struct S { bool foo(const char *str, int arg) { return std::cout &lt;&lt; str &lt;&lt; &quot;: &quot; &lt;&lt; arg &lt;&lt; '\n'; } } s;

  boost::bind(&amp;S::foo, s, _1, 5)(&quot;hallo&quot;);
  [&amp;s] (const char *str) -&gt; bool { return s.foo(str, 5); } (&quot;hallo&quot;);
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27919">@D3lta</a>: Einfach bind einen weiteren Parameter übergeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141345</guid><dc:creator><![CDATA[kopfschüttler]]></dc:creator><pubDate>Sun, 06 Nov 2011 19:50:08 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Sun, 06 Nov 2011 20:02:27 GMT]]></title><description><![CDATA[<p>kopfschüttler schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22268">@pi</a>: Was ist da wohl schöner?</p>
<pre><code class="language-cpp">struct S { bool foo(const char *str, int arg) { return std::cout &lt;&lt; str &lt;&lt; &quot;: &quot; &lt;&lt; arg &lt;&lt; '\n'; } } s;

  boost::bind(&amp;S::foo, s, _1, 5)(&quot;hallo&quot;);
  [&amp;s] (const char *str) -&gt; bool { return s.foo(str, 5); } (&quot;hallo&quot;);
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27919">@D3lta</a>: Einfach bind einen weiteren Parameter übergeben?</p>
</blockquote>
<p>Bin für das erste <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Aber auch nur, weil ich von Lambda keine Ahnung habe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Fehlt nur noch, dass jemand mir erklärt was Placeholders sind <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>mfg D3lta</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141354</guid><dc:creator><![CDATA[D3lta]]></dc:creator><pubDate>Sun, 06 Nov 2011 20:02:27 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Mon, 07 Nov 2011 08:14:04 GMT]]></title><description><![CDATA[<p>Warum so kompliziert? Wenn die Klasse ein &quot;callable&quot; Interface anbietet, sprich: operator() überlädt, reich boost::thread doch this, zumindest laut boost Dokumentation. Oder übersehe ich da was?</p>
<pre><code class="language-cpp">#include &lt;boost/thread/thread.hpp&gt;

class A
{
private:
        int i;
public:
        void funcA()
        {
                i=1;
                boost::thread th(*this, 42, &quot;Hello&quot;);
        }
        void operator()(int i, string j)
        {
                i++;
        }
};

int main()
{
        A a;
        a.funcA();
        return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2141469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141469</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 07 Nov 2011 08:14:04 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Mon, 07 Nov 2011 09:15:38 GMT]]></title><description><![CDATA[<p>Ich weiß jetzt nicht, wie es bei Boost aussieht, aber ein std::thread darf man nicht einfach erzeugen und wieder zerstören ohne .join oder .detatch (falls es das noch gibt) aufgerufen zu haben.</p>
<p>Und die std::thread akzeptiert sogar Memberfunktionszeiger:</p>
<pre><code class="language-cpp">class foo {
public:
  void bar(double);
};

int main() {
  foo f;
  std::thread t (&amp;foo::bar,&amp;f,2.71828);
  t.join();
}
</code></pre>
<p>(ungetestet)</p>
<p>oder man schreibt gleich</p>
<pre><code class="language-cpp">class foo {
public:
  void bar(double);
};

int main() {
  foo f;
  auto futr = std::async(&amp;foo::bar,&amp;f,2.71828);
  futr.get();
}
</code></pre>
<p>(ungetestet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141507</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 07 Nov 2011 09:15:38 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Mon, 07 Nov 2011 09:28:28 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Sobald du Placeholder verwendest, wirst du bereuhen, bind verwendet zu haben. Versprochen.</p>
</blockquote>
<p>Belege? (Interessiert micht wirklich, ich hab schon einiges mit placeholder gemacht)</p>
<p>Einfach nur den Leuten kurze Phrasen an den Kopf zu werfen, erhöht zwar deinen Post Count, lässt dich aber nicht erfahrener wirken <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26836">@Topic</a>:</p>
<p>Auch boost::thread lässt sich mittlerweile ohne bind konstruieren: <a href="http://www.boost.org/doc/libs/1_47_0/doc/html/thread/thread_management.html#thread.thread_management.thread.callable_constructor" rel="nofollow">http://www.boost.org/doc/libs/1_47_0/doc/html/thread/thread_management.html#thread.thread_management.thread.callable_constructor</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141515</guid><dc:creator><![CDATA[pi_herausforderer]]></dc:creator><pubDate>Mon, 07 Nov 2011 09:28:28 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Mon, 07 Nov 2011 09:45:27 GMT]]></title><description><![CDATA[<p>pi_herausforderer schrieb:</p>
<blockquote>
<p>Belege? (Interessiert micht wirklich, ich hab schon einiges mit placeholder gemacht)</p>
</blockquote>
<p>Die Fehlermeldungen sind ekelhaft.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141521</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Mon, 07 Nov 2011 09:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Mon, 07 Nov 2011 09:56:30 GMT]]></title><description><![CDATA[<p>ogni42 schrieb:</p>
<blockquote>
<p>Oder übersehe ich da was?</p>
</blockquote>
<p>Ja, du übersiehst, dass das Argument kopiert wird, d.h. du übergibst eine Kopie von *this an den Thread, was nicht ist, was der OP möchte.</p>
<p>@ Lambdas vs. bind: keins von beidem sondern tatsächlich den variadic Konstruktor von std::thread nutzen.</p>
<p>kopfschüttler schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/22268">@pi</a>: Was ist da wohl schöner?</p>
<pre><code class="language-cpp">struct S { bool foo(const char *str, int arg) { return std::cout &lt;&lt; str &lt;&lt; &quot;: &quot; &lt;&lt; arg &lt;&lt; '\n'; } } s;

  boost::bind(&amp;S::foo, s, _1, 5)(&quot;hallo&quot;);
  [&amp;s] (const char *str) -&gt; bool { return s.foo(str, 5); } (&quot;hallo&quot;);
</code></pre>
</blockquote>
<p>In dem Fall das lambda, nur ohne den überflüssigen trailing returntype:</p>
<pre><code class="language-cpp">auto func = [&amp;s](char const* str) {return s.foo(str,5);};
func(&quot;hallo&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2141526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141526</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 07 Nov 2011 09:56:30 GMT</pubDate></item><item><title><![CDATA[Reply to Boost::Thread und member-Funktionen on Mon, 07 Nov 2011 10:08:39 GMT]]></title><description><![CDATA[<p>kopfschüttler schrieb:</p>
<blockquote>
<p>Dies ist ein klarer Fall für <code>std::bind(&amp;A::funcB, this)</code> .</p>
</blockquote>
<p>Das sehe ich nicht so. Was soll denn an</p>
<pre><code class="language-cpp">std::bind(&amp;A::funcB, this)
</code></pre>
<p>viel besser sein als bei</p>
<pre><code class="language-cpp">[this]{funcB();}
</code></pre>
<p>?</p>
<p>Das Blöde bei dem Funktionszeigern ist noch, dass das nicht so schön funktioniert, wenn die Funktionen überladen sind. Mit Einzug von Move Semantics ist schon so mancher Elementfunktionszeiger-verwendender C++ Code kaputt gegangen, weil plötzlich so'was wie push_back überladen ist. Da ist das mit den Lambdas dagegen (zumindest in diesem Fall) eher schmerzfrei.</p>
<p>Außerdem, wenn du schon <strong>std</strong>::bind verwendest, kannst Du auch gleich den variadischen Konstruktor von <strong>std</strong>::thread ausnutzen. Dadurch wird ein <code>bind</code> auch überflüssig und es werden sogar move-only-Parameter korrekt unterstützt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2141531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2141531</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 07 Nov 2011 10:08:39 GMT</pubDate></item></channel></rss>