<?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::bind - Warum wird ein Kopier-Konstruktor benötigt?]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>mein ursprüngliches Ziel war folgendes:<br />
Ich wollte an einem std::function-Objekt mittels std::bind ein Objekt binden und dabei unnötiges Kopieren des Objektes verhindern.</p>
<p>Ein Minimalbeispiel:</p>
<pre><code>class foo
{
public:
	foo() { cout &lt;&lt; &quot;Konstruktor\n&quot;; }
	foo( const foo&amp; k ) :member{ k.member } { cout &lt;&lt; &quot;Kopier-Konstruktor\n&quot;; }
	foo( foo&amp;&amp; m ) :member{ m.member } { cout &lt;&lt; &quot;Move-Konstruktor\n&quot;; }
	~foo() { cout &lt;&lt; &quot;Destruktor\n&quot;; }

	int member{ 42 };
}; 

void do_something( const foo&amp; f )
{
	cout &lt;&lt; f.member &lt;&lt; endl;
}

int main()
{
	function&lt;void()&gt; f;

	{
		foo bar;
		bar.member = 1337;

		f = bind( do_something , move( bar ) );
	}

	f();
	return 0;
}
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>Konstruktor<br />
Move-Konstruktor<br />
Move-Konstruktor<br />
Move-Konstruktor<br />
Destruktor<br />
Destruktor<br />
Destruktor<br />
1337<br />
Destruktor</p>
</blockquote>
<p>Der obige Code erzeugt das gewünschte Verhalten - Es wird kein Kopier-Konstruktor aufgerufen!</p>
<p>Wenn ich nun den Kopier-Konstruktor auskommentiere/weglasse, dann bekomme ich ein Compilefehler (<em>&quot;Es wurde versucht, auf eine gelöschte Funktion zu verweisen&quot;</em>).<br />
Ich verstehe nicht warum. Der Programmablauf nutzt diese Funktion nicht!!!</p>
<p>Danke für die Erklärungen und MfG<br />
shft</p>
<p>PS: Compiler: VS 2015</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/336762/std-bind-warum-wird-ein-kopier-konstruktor-benötigt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Apr 2026 00:21:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/336762.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Feb 2016 17:23:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 17:29:40 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>mein ursprüngliches Ziel war folgendes:<br />
Ich wollte an einem std::function-Objekt mittels std::bind ein Objekt binden und dabei unnötiges Kopieren des Objektes verhindern.</p>
<p>Ein Minimalbeispiel:</p>
<pre><code>class foo
{
public:
	foo() { cout &lt;&lt; &quot;Konstruktor\n&quot;; }
	foo( const foo&amp; k ) :member{ k.member } { cout &lt;&lt; &quot;Kopier-Konstruktor\n&quot;; }
	foo( foo&amp;&amp; m ) :member{ m.member } { cout &lt;&lt; &quot;Move-Konstruktor\n&quot;; }
	~foo() { cout &lt;&lt; &quot;Destruktor\n&quot;; }

	int member{ 42 };
}; 

void do_something( const foo&amp; f )
{
	cout &lt;&lt; f.member &lt;&lt; endl;
}

int main()
{
	function&lt;void()&gt; f;

	{
		foo bar;
		bar.member = 1337;

		f = bind( do_something , move( bar ) );
	}

	f();
	return 0;
}
</code></pre>
<p>Ausgabe:</p>
<blockquote>
<p>Konstruktor<br />
Move-Konstruktor<br />
Move-Konstruktor<br />
Move-Konstruktor<br />
Destruktor<br />
Destruktor<br />
Destruktor<br />
1337<br />
Destruktor</p>
</blockquote>
<p>Der obige Code erzeugt das gewünschte Verhalten - Es wird kein Kopier-Konstruktor aufgerufen!</p>
<p>Wenn ich nun den Kopier-Konstruktor auskommentiere/weglasse, dann bekomme ich ein Compilefehler (<em>&quot;Es wurde versucht, auf eine gelöschte Funktion zu verweisen&quot;</em>).<br />
Ich verstehe nicht warum. Der Programmablauf nutzt diese Funktion nicht!!!</p>
<p>Danke für die Erklärungen und MfG<br />
shft</p>
<p>PS: Compiler: VS 2015</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487217</guid><dc:creator><![CDATA[shft]]></dc:creator><pubDate>Mon, 15 Feb 2016 17:29:40 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 18:17:31 GMT]]></title><description><![CDATA[<p>Stichwort zum Suchen: copy elision, s. z.B. <a href="http://stackoverflow.com/questions/8890528/copy-constructor-elision" rel="nofollow">Copy constructor elision</a></p>
<p>Durch das manuelle Hinzufügen des Move-Konstruktor wird der Copy-Konstruktor nicht mehr automatisch erzeugt. Er wird zwar bei der &quot;copy elision&quot; nicht aufgerufen, muß aber trotzdem existieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487224</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487224</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Mon, 15 Feb 2016 18:17:31 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 18:53:40 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Stichwort zum Suchen: copy elision, s. z.B. <a href="http://stackoverflow.com/questions/8890528/copy-constructor-elision" rel="nofollow">Copy constructor elision</a></p>
<p>Durch das manuelle Hinzufügen des Move-Konstruktor wird der Copy-Konstruktor nicht mehr automatisch erzeugt. Er wird zwar bei der &quot;copy elision&quot; nicht aufgerufen, muß aber trotzdem existieren.</p>
</blockquote>
<p>Blödsinn.</p>
<p>Das Problem besteht darin, dass eine Funktion instantiiert wird, die nie aufgerufen wird:</p>
<pre><code>// Clone a function object that is not location-invariant or
	// that cannot fit into an _Any_data structure.
	static void
	_M_clone(_Any_data&amp; __dest, const _Any_data&amp; __source, false_type)
	{
	  __dest._M_access&lt;_Functor*&gt;() =
	    new _Functor(*__source._M_access&lt;_Functor*&gt;());
	}
</code></pre>
<p>Die Instantiierung wird durch ein <code>switch</code> -Statement bedingt, das in der Ausführung eine anderen Pfad einschlägt. Siehe Zeile 1666:</p>
<pre><code>static bool
	_M_manager(_Any_data&amp; __dest, const _Any_data&amp; __source,
		   _Manager_operation __op)
	{
	  switch (__op)
	    {
#if __cpp_rtti
	    case __get_type_info:
	      __dest._M_access&lt;const type_info*&gt;() = &amp;typeid(_Functor);
	      break;
#endif
	    case __get_functor_ptr:
	      __dest._M_access&lt;_Functor*&gt;() = _M_get_pointer(__source);
	      break;

	    case __clone_functor:
	      _M_clone(__dest, __source, _Local_storage()); // &lt;===  Hier
	      break;

	    case __destroy_functor:
	      _M_destroy(__dest, _Local_storage());
	      break;
	    }
	  return false;
	}
</code></pre>
<p>Wenn wir die markierte Zeile auskommentieren, funktioniert dein Beispiel auch mit als deleted definiertem Kopierkonstruktor. libc++ hingegen verwendet copy&amp;swap im perfect forwarding assignment operator.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487228</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 15 Feb 2016 18:53:40 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 20:03:02 GMT]]></title><description><![CDATA[<p>Mit einem aktuellen Compiler gibt es keinen Grund mehr, bind zu benutzen:</p>
<pre><code class="language-cpp">f = [bar=move(bar)]{ do_something(bar); };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2487240</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487240</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 15 Feb 2016 20:03:02 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 21:49:31 GMT]]></title><description><![CDATA[<p><strong>@Arcoth</strong><br />
Danke für die Erklärung, verstehe jetzt das Problem <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="🙂"
    /><br />
Ärgerlich ist dabei eben, dass es anscheinend nur funktioniert, wenn die Klasse auch einen Kopierkonstruktor definiert hat.</p>
<p><strong>@manni66</strong><br />
Interessante Lösung, kommt aber auf das Gleiche hinaus (der Compiler meldet ebenfalls einen fehlenden Kopierkonstruktor).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487267</guid><dc:creator><![CDATA[shft]]></dc:creator><pubDate>Mon, 15 Feb 2016 21:49:31 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 22:32:33 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>libc++ hingegen verwendet copy&amp;swap im perfect forwarding assignment operator.</p>
</blockquote>
<p>Heißt? Der Code compiliert bei mir jedenfalls weder mit GCC noch mit Clang (auch nicht mit libc++).</p>
<p>Der Grund ist eigentlich auch klar, wobei ich die Erklärung von Arcoth etwas knapp finde. Die Funktion die instanziert aber niemals aufgerufen wird ist nicht von <code>std::bind</code> sondern vom Assignment Operator von <code>std::function</code> . Dazu muss man Wissen, dass <code>std::function</code> eine Technik namens Type Erasure nutzt um Objekte beliebigen Typs zu speichern, solange er sich an ein bestimmtes Interface hält. Also bei <code>std::function</code> eben etwas aufrufen, dass aussieht wie eine Funktion. Allerdings soll man <code>std::function</code> natürlich auch kopieren können weshalb das Type Erasure Interface auch eine Funktion zum Kopieren anbieten muss. Diese Funktion kann aber keine Template Funktion sein weshalb es Compiler Fehler hagelt, auch wenn man niemals versucht diese Funktion aufzurufen. Mir fällt gerade auch keine Möglichkeit ein wie man std::function implementieren soll ohne diese Einschränkung. Du wirst also wohl damit leben müssen, dass deine Function Objekt kopierbar sein müssen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487280</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Mon, 15 Feb 2016 22:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 22:36:02 GMT]]></title><description><![CDATA[<p>shft schrieb:</p>
<blockquote>
<p><strong>@manni66</strong><br />
Interessante Lösung, kommt aber auf das Gleiche hinaus (der Compiler meldet ebenfalls einen fehlenden Kopierkonstruktor).</p>
</blockquote>
<p>Naja, function ist so ja immer noch vorhanden. Es war auch nur als Hinweis gedacht, dass bind nicht mehr benötigt wird.</p>
<p>Komplettlösung ohne function</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class foo
{
public:
    foo() { cout &lt;&lt; &quot;Konstruktor\n&quot;; }
    //foo( const foo&amp; k ) :member{ k.member } { cout &lt;&lt; &quot;Kopier-Konstruktor\n&quot;; }
    foo( foo&amp;&amp; m ) :member{ m.member } { cout &lt;&lt; &quot;Move-Konstruktor\n&quot;; }
    ~foo() { cout &lt;&lt; &quot;Destruktor\n&quot;; }

    int member{ 42 };
};

void do_something( const foo&amp; f )
{
    cout &lt;&lt; f.member &lt;&lt; endl;
}

int main()
{
    auto f = []
    {
        foo bar;
        bar.member = 1337;

        return [bar=move(bar)]{ do_something(bar); };
    };

    f();
}
</code></pre>
<p>Ist jetzt natürlich ein sehr künstliches Problem ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487282</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487282</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 15 Feb 2016 22:36:02 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 22:37:13 GMT]]></title><description><![CDATA[<p>shft schrieb:</p>
<blockquote>
<p><strong>@manni66</strong><br />
Interessante Lösung, kommt aber auf das Gleiche hinaus (der Compiler meldet ebenfalls einen fehlenden Kopierkonstruktor).</p>
</blockquote>
<p>Klar, der Member ist schließlich, genau wie im vorigen Beispiel, ein Objekt vom Typ <code>foo</code> , und es wird fälschlicherweise der Kopierkonstruktor des closure Typen benötigt.</p>
<p>Es gibt keine direkte Lösung für dein Problem - außer, nicht mehr <code>function</code> zu verwenden, oder aber die Lebenszeit des Objekts zu analysieren und nur einen reference wrapper zu überreichen, damit <code>bind</code> lediglich eine Referenz auf das Objekt im Proxy speichert:<a href="http://melpon.org/wandbox/permlink/SCC6Qqsz2rk5t0zD" rel="nofollow"> <code>bind(do_something, std::ref(bar))</code> funktioniert in deinem Beispiel</a>.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487283</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 15 Feb 2016 22:37:13 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Tue, 16 Feb 2016 13:42:25 GMT]]></title><description><![CDATA[<p>Man könnte auch einfacher sagen: da <code>std::function</code> kopierbar ist, muss auch alles was man in ein <code>std::function</code> reintut kopierbar sein.</p>
<p>Ob das <code>std::function</code> Objekt dann jemals kopiert wird spielt dabei keine Rolle, da <code>std::function</code> <s>Type-Hiding</s> Type-Erasure betreibt, und daher bei nicht-kopierbaren Objekten nur die Wahl hat:</p>
<ol>
<li>Initialisierung des <code>std::function</code> kompiliert nicht.</li>
<li>Initialisierung des <code>std::function</code> kompiliert, das so erstellte <code>std::function</code> wirft aber beim Versuch eine Kopie zu erstellen eine Exveption.</li>
</ol>
<p>(2) wäre natürlich sehr doof, daher (1).</p>
<p>Und natürlich kann man noch &quot;genereller&quot; werden: Der C++ Standard geht generell davon aus dass Funktoren kopierbar sind. Mehr noch: er geht davon aus dass Funktoren relativ billig kopierbar sind. Erkennbar daran dass die std. Algorithmen ( <code>sort</code> etc.) den Funktor &quot;by value&quot; nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487284</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 16 Feb 2016 13:42:25 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 22:40:22 GMT]]></title><description><![CDATA[<p>sebi707 schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<p>libc++ hingegen verwendet copy&amp;swap im perfect forwarding assignment operator.</p>
</blockquote>
<p>Heißt?</p>
</blockquote>
<p><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="😕"
    /> Dass es nicht funktioniert? Ich wollte mit &quot;hingegen&quot; nur darauf hinweisen, dass die Erklärung hier ziemlich trivial ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487286</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 15 Feb 2016 22:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Mon, 15 Feb 2016 22:41:48 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Es gibt keine direkte Lösung für dein Problem - außer, nicht mehr <code>function</code> zu verwenden, oder aber die Lebenszeit des Objekts zu analysieren und nur einen reference wrapper zu überreichen, damit <code>bind</code> lediglich eine Referenz auf das Objekt im Proxy speichert:<a href="http://melpon.org/wandbox/permlink/SCC6Qqsz2rk5t0zD" rel="nofollow"> <code>bind(do_something, std::ref(bar))</code> funktioniert in deinem Beispiel</a>.</p>
</blockquote>
<p>Man könnte auch nen <code>shared_ptr&lt;foo&gt;</code> in den Funktor reinstecken. So lange der Funktor nur lesend ( <code>const</code> ) auf <code>foo</code> zugreift sollte das kein Problem machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487287</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 15 Feb 2016 22:41:48 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Tue, 16 Feb 2016 13:00:14 GMT]]></title><description><![CDATA[<p>Ich würde sagen, es liegt an der Type Erasure von std::function. std::function muss kopierbar sein. Damit std::function kopierbar ist, müssen auch alle Funktionsobjekte, die so gewrappt werden, kopierbar sein. Da ist es ganz egal, ob du ein std::function Objekt tatsächlich kopierst oder nicht. Die Möglichkeit zum Kopieren muss gewährleistet sein, damit man später ein std::function kopieren kann. Alternativ könnte man auch nicht-kopierbare Funktionsobjekte wrappen. Dann müsste man aber beim Versuch ein solches std::function zu kopieren, eine Ausnahme oder so etwas werfen. Warum? Type Erasure:</p>
<pre><code class="language-cpp">template&lt;class Signature&gt;
class abstract_callable;

template&lt;class Return, class...Args&gt;
class abstract_callable&lt;Return(Args...)&gt;
{
public:
    virtual ~abstract_callable() = default;
    virtual abstract_callable* clone() const = 0;  // &lt;-- ding ding ding!
    virtual Return invoke(Args...args) = 0;
};

template&lt;class Signature&gt;
class function;

template&lt;class Return, class...Args&gt;
class function&lt;Return(Args...)&gt;
{
    unique_ptr&lt;abstract_callable&lt;Return(Args...)&gt;&gt; funptr;

public:
    ...
    function(function const&amp; x)
    : funptr(x.funptr ? x.funptr-&gt;clone() : nullptr)
    {}
    ...
};
</code></pre>
<p>(Skizze einer möglichen std::function Implementierung)</p>
<p>An der Stelle, wo ein konkretes callable-Objekt erzeugt wird, was von abstract_callable ableitet muss man natürlich auch <code>clone()</code> implementieren, ob es benutzt wird oder nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487372</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Tue, 16 Feb 2016 13:00:14 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Tue, 16 Feb 2016 13:44:28 GMT]]></title><description><![CDATA[<p>Das ist ziemlich genau das was ich schon geschrieben habe. Bloss dass ich statt Type Erasure fälschlicherweise &quot;Type Hiding&quot; geschrieben hatte (korrigiert).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487384</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 16 Feb 2016 13:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Tue, 16 Feb 2016 13:58:38 GMT]]></title><description><![CDATA[<p>Super. Jetzt haben wir 4 Erklärungen für das gleiche Problem <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2487391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487391</guid><dc:creator><![CDATA[sebi707]]></dc:creator><pubDate>Tue, 16 Feb 2016 13:58:38 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Tue, 16 Feb 2016 21:21:19 GMT]]></title><description><![CDATA[<p>*verschoben*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487474</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 16 Feb 2016 21:21:19 GMT</pubDate></item><item><title><![CDATA[Reply to std::bind - Warum wird ein Kopier-Konstruktor benötigt? on Tue, 16 Feb 2016 21:44:30 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>*verschoben*</p>
</blockquote>
<p>Na das machst du doch prima! Warum willste nicht gleich Mod werden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2487484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2487484</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 16 Feb 2016 21:44:30 GMT</pubDate></item></channel></rss>