<?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.Bind -&amp;gt; Übernutzung (goto?)]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Seit ich Boost.Bind entdeckt habe, benutze ich es ununterbrochen. Es ist wohl eines der Boost-Features, welches ich am meisten einsetze.<br />
Wenn ich meinen Code nochmals etwas später anschaue (was logischweise durchaus vorkommt), dann kommt es mir manchmal fast ein wenig so vor, als wäre Boost.Bind ein modernes goto.<br />
Klar man kann wahnsinnig geile Dinge mit Boost.Bind machen. Zum Beispiel verschachtelte Funktionen mit Parametern verzögert aufrufen, finde ich extrem praktisch. Aber kann es sein, dass Boost.Bind ein wenig die Übersicht raubt und einem Richtung Goto-Spaghetti-Code führt?</p>
<p>Wie ist das bei euch so? Wie oft verwendet ihr Boost.Bind? Probiert ihr eher Alternativen zu Boost.Bind zu finden oder nutzt ihr es ungehemmt?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/213580/boost-bind-gt-übernutzung-goto</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 05:24:12 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/213580.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 May 2008 13:52:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost.Bind -&amp;gt; Übernutzung (goto?) on Mon, 19 May 2008 13:52:47 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>Seit ich Boost.Bind entdeckt habe, benutze ich es ununterbrochen. Es ist wohl eines der Boost-Features, welches ich am meisten einsetze.<br />
Wenn ich meinen Code nochmals etwas später anschaue (was logischweise durchaus vorkommt), dann kommt es mir manchmal fast ein wenig so vor, als wäre Boost.Bind ein modernes goto.<br />
Klar man kann wahnsinnig geile Dinge mit Boost.Bind machen. Zum Beispiel verschachtelte Funktionen mit Parametern verzögert aufrufen, finde ich extrem praktisch. Aber kann es sein, dass Boost.Bind ein wenig die Übersicht raubt und einem Richtung Goto-Spaghetti-Code führt?</p>
<p>Wie ist das bei euch so? Wie oft verwendet ihr Boost.Bind? Probiert ihr eher Alternativen zu Boost.Bind zu finden oder nutzt ihr es ungehemmt?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1512296</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1512296</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 19 May 2008 13:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Bind -&amp;gt; Übernutzung (goto?) on Mon, 19 May 2008 15:15:02 GMT]]></title><description><![CDATA[<p>Willkommen bei den anonymen Boost.Bindern. Setz dich hin und hör zu, wie die anderen ihre Leidengeschichte erzählen.</p>
<blockquote>
<p>Zum Beispiel verschachtelte Funktionen mit Parametern verzögert aufrufen, finde ich extrem praktisch.</p>
</blockquote>
<p>Wie geht das? Beispiel?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1512375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1512375</guid><dc:creator><![CDATA[Anonymer Knüpfer]]></dc:creator><pubDate>Mon, 19 May 2008 15:15:02 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Bind -&amp;gt; Übernutzung (goto?) on Mon, 19 May 2008 16:10:53 GMT]]></title><description><![CDATA[<p>Ich benutze Bind, wenn ich es für angebracht halte ;).<br />
Bei meinem eigenen Code brauch ich es relativ selten, höchstens, wenn ich mit Threads arbeite.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1512432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1512432</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Mon, 19 May 2008 16:10:53 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Bind -&amp;gt; Übernutzung (goto?) on Mon, 19 May 2008 17:36:37 GMT]]></title><description><![CDATA[<p>Anonymer Knüpfer schrieb:</p>
<blockquote>
<p>Willkommen bei den anonymen Boost.Bindern. Setz dich hin und hör zu, wie die anderen ihre Leidengeschichte erzählen.</p>
</blockquote>
<p>Es ist keine Leidensgeschichte, es ist eher eine Droge :p</p>
<p>Anonymer Knüpfer schrieb:</p>
<blockquote>
<blockquote>
<p>Zum Beispiel verschachtelte Funktionen mit Parametern verzögert aufrufen, finde ich extrem praktisch.</p>
</blockquote>
<p>Wie geht das? Beispiel?</p>
</blockquote>
<p>Zum Beispiel sowas:</p>
<pre><code class="language-cpp">class CThread
{
	// Attributes //
private:
	boost::function3&lt;void, int, int, int&gt; m_Func;

	// Constructors &amp; Destructor //
public:
	CThread(boost::function3&lt;void, int, int, int&gt; Func) : m_Func(Func) { };
	~CThread() { };

	// Methods //
private:
	void run()
	{
		int x = 0, y = 1, z = 2;
		// Mach irgendwas

		if(m_Func)
		{ m_Func(x, y, z); }
	}

public:
	void start() { boost::thread(boost::bind(&amp;CThread::run, this)); };
};

int calc(int y, int z, int o)
{
	// Mach was
	return y + z + o;
}

void end_thread(int x, int y)
{
	// Mach was
	std::cout &lt;&lt; &quot;Thread end, x: &quot; &lt;&lt; x &lt;&lt; &quot; , y: &quot; &lt;&lt; y &lt;&lt; std::endl;
}

int main()
{
	CThread Thread(boost::bind(&amp;end_thread, _1, boost::bind(&amp;calc, _2, _3, 10)));
	// Bedeutung:
	// Am ende des Threads wird folgender Aufruf ausgeführt:
	// end_thread(x, calc(y, z, 10));

	Thread.start();

	std::cin.sync();
	std::cin.get();

	return 0;
}
</code></pre>
<p>Gerade das bind im CThread Konstruktor ist ein bisschen wahnsinnig und ich habe schon extremere erlebt. Aber es geht so viel einfacher und erlaubt einem so viele Möglichkeiten.<br />
Auch eine praktische Sache im Beispiel ist, die einfache Art die private Methode <em>run</em> aufzurufen.</p>
<p>Mit Boost.Bind ist fast alles möglich, womöglich eben zu viel <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="😃"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1512501</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1512501</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 19 May 2008 17:36:37 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Bind -&amp;gt; Übernutzung (goto?) on Mon, 19 May 2008 18:43:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for_each( map.begin(), map.end(), bind( &amp;boost::checked_delete, bind( &amp;map_t::value_type::second, _1 ) ) );
</code></pre>
<p>Doch, ich benutze inzwischen auch sehr häufig Funktionskomposition. Geht schneller als eine neue Funktion zu schreiben, und hilft meiner Meinung nach die Algorithmen (und sei es nur eine Schleife wie diese) von der eigentlichen Aufgabe zu trennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1512541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1512541</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 19 May 2008 18:43:22 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Bind -&amp;gt; Übernutzung (goto?) on Mon, 19 May 2008 19:49:16 GMT]]></title><description><![CDATA[<p>Was macht denn die Zeile? In der Map jeweils die values löschen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1512586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1512586</guid><dc:creator><![CDATA[uff]]></dc:creator><pubDate>Mon, 19 May 2008 19:49:16 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Bind -&amp;gt; Übernutzung (goto?) on Tue, 20 May 2008 03:41:32 GMT]]></title><description><![CDATA[<p>Ja, sie führt operator delete (bzw. die Funktion checked_delete, welche operator delete aufruft) auf alle Values in einer map&lt; T, U* &gt; aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1512733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1512733</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 20 May 2008 03:41:32 GMT</pubDate></item></channel></rss>