<?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[Lambdas]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

auto print = [] (const std::string&amp; s) -&gt; void {
        std::cout &lt;&lt; s &lt;&lt; '\n';
};

int main()
{
        print(&quot;Hello, Test!&quot;);
}
</code></pre>
<p>Das kompiliert zu meinem Erstaunen fehlerfrei. Lambdas haben also freien Zugriff auf globale Variablen. Warum hat man sich dafür entschieden?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302183/lambdas</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 17:17:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302183.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 Apr 2012 20:08:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lambdas on Thu, 12 Apr 2012 20:08:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

auto print = [] (const std::string&amp; s) -&gt; void {
        std::cout &lt;&lt; s &lt;&lt; '\n';
};

int main()
{
        print(&quot;Hello, Test!&quot;);
}
</code></pre>
<p>Das kompiliert zu meinem Erstaunen fehlerfrei. Lambdas haben also freien Zugriff auf globale Variablen. Warum hat man sich dafür entschieden?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201312</guid><dc:creator><![CDATA[lulf]]></dc:creator><pubDate>Thu, 12 Apr 2012 20:08:27 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Thu, 12 Apr 2012 20:12:23 GMT]]></title><description><![CDATA[<p>lulf schrieb:</p>
<blockquote>
<p>Das kompiliert zu meinem Erstaunen fehlerfrei. Lambdas haben also freien Zugriff auf globale Variablen. Warum hat man sich dafür entschieden?</p>
</blockquote>
<p>Zu meinem nicht, völlig korrekter Code (auch nicht besonders)...<br />
Das ist einer der Konzepte (zugriff auf scope-locals).</p>
<p>Außerdem können normale Funktionen genauso auf globals zugreifen.</p>
<p>P.S.: Das <code>-&gt;void</code> ist da unnötig, da der Rückgabetyp sich ähnlich wie bei PHP automatisch deduzieren lässt... <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/2201314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201314</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 12 Apr 2012 20:12:23 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Thu, 12 Apr 2012 20:12:34 GMT]]></title><description><![CDATA[<p>Hacker schrieb:</p>
<blockquote>
<p>Zu meinem nicht, völlig korrekter Code (auch nicht besonders)...</p>
</blockquote>
<p>Bitte was?</p>
<p>Hacker schrieb:</p>
<blockquote>
<p>Das ist einer der Konzepte (zugriff auf scope-locals).</p>
</blockquote>
<p>Was? Ne, eine Lambda hat normalerweise keinen Zugriff auf Scope-lokale Variablen. (Es sei denn, sie werden gecaptured.)</p>
<p>Hacker schrieb:</p>
<blockquote>
<p>Außerdem können normale Funktionen genauso auf globals zugreifen.</p>
</blockquote>
<p>Ja super, tolles Argument. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2201316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201316</guid><dc:creator><![CDATA[lufl]]></dc:creator><pubDate>Thu, 12 Apr 2012 20:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Thu, 12 Apr 2012 20:15:12 GMT]]></title><description><![CDATA[<p>lufl schrieb:</p>
<blockquote>
<p>Was? Ne, eine Lambda hat normalerweise keinen Zugriff auf Scope-lokale Variablen. (Es sei denn, sie werden gecaptured.)</p>
</blockquote>
<p>Ich meinte, dass das möglich ist, ist ein Konzept (ja, irgendwie zusammenhanglos...)</p>
<p>Du meinst mit gecaptured sicher das '&amp;' in den Index-Klammern.</p>
<pre><code class="language-cpp">auto lambda = [&amp;](){std::cout &lt;&lt; a &lt;&lt; '\n';};
</code></pre>
<p>Das mit</p>
<blockquote>
<p>zu meinem nicht..</p>
</blockquote>
<p>, da meinte ich dass es mich überhaupt nicht überrascht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201318</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201318</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 12 Apr 2012 20:15:12 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Thu, 12 Apr 2012 20:16:08 GMT]]></title><description><![CDATA[<p>lufl schrieb:</p>
<blockquote>
<p>Hacker schrieb:</p>
<blockquote>
<p>Außerdem können normale Funktionen genauso auf globals zugreifen.</p>
</blockquote>
<p>Ja super, tolles Argument. <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>
</blockquote>
<p>Wo findest du unterscheiden sich Lambdas und normale Funktionen genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201319</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201319</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 12 Apr 2012 20:16:08 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Thu, 12 Apr 2012 20:23:35 GMT]]></title><description><![CDATA[<p>lol <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="🙄"
    /><br />
Lambdas sind, im Gegensatz zu Funktionen, Objekte. Solange man also nicht per ref captured, haben Lambdas garantiert keine Seiteneffekte. Oder hätten sie nicht, wenn man nicht die globalen Variablen automatisch drin hätte. Was ich absolut nicht nachvollziehen kann. Eigentlich ziemlich großer Quatsch. Jetzt frage ich mich, was sich die Herren dabei gedacht haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201324</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201324</guid><dc:creator><![CDATA[lulf]]></dc:creator><pubDate>Thu, 12 Apr 2012 20:23:35 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Thu, 12 Apr 2012 20:40:22 GMT]]></title><description><![CDATA[<p>Sieh mal. Erstens: Lambdas ohne andere Funktionen benutzen zu können ist lächerlich (andere Funktionen: sprich: Alle Funktionen aus der STL-Algorithmus Bibliothek, alle Standard-C Funktionen, ..., aber auch Klassen-Methoden). Allerdings weiß man nicht, ob diese vielleicht auch Globals verwenden. Also würde der Seiteneffekt unbewusst impliziert werden, auch wenn mann das Benutzen von Globals &quot;verbieten&quot; würde.</p>
<p>Oder argumentiere ich falsch <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>Also, was ich meine ist, wenn man es syntaktisch verbietet, würde es im Endeffekt keinen Unterschied (außer den blöden Effekt, dass ich Globals eben NICHT VERWENDEN KANN) machen, also jedenfalls keinen positiven.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201332</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 12 Apr 2012 20:40:22 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Fri, 13 Apr 2012 07:00:14 GMT]]></title><description><![CDATA[<p>Wenn man in Lambdas keinen Zugriff auf globale <em>Variablen</em> hätte (Dass Zugriff auf Funktionen nötig ist, ist hoffentlich klar), könnte man dein Lambda sehr leicht trotzdem implementieren, mit einer Zeile Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

decltype(std::cout)&amp; getCout() {return std::cout;} //(!) 

auto print = [] (const std::string&amp; s) {
        getCout() &lt;&lt; s &lt;&lt; '\n';
};

int main()
{
        print(&quot;Hello, Test!&quot;);
}
</code></pre>
<p>Und nu? Das kann man für jede globale Variable machen, also kein Gewinn, wenn man den Zugriff verbietet. Also kann mans auch gleich lassen und den Zugriff erlauben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201424</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 13 Apr 2012 07:00:14 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Fri, 13 Apr 2012 07:15:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Das kompiliert zu meinem Erstaunen fehlerfrei. Lambdas haben also freien Zugriff auf globale Variablen. Warum hat man sich dafür entschieden?</p>
</blockquote>
<p>Warum sollten sich unbenannte Funktionen anders verhalten als benannte/normale?</p>
<blockquote>
<p>Lambdas sind, im Gegensatz zu Funktionen, Objekte.</p>
</blockquote>
<p>Konzept und Umsetzung sind zwei verschiedene Dinge.</p>
<blockquote>
<p>haben Lambdas garantiert keine Seiteneffekte</p>
</blockquote>
<p>Das ist falsch wie du siehst. Sie sollen sich nicht anders als normale Funktionen verhalten.</p>
<blockquote>
<p>Was ich absolut nicht nachvollziehen kann. Eigentlich ziemlich großer Quatsch. Jetzt frage ich mich, was sich die Herren dabei gedacht haben.</p>
</blockquote>
<p>Sie sollen sich eben genauso wie normale Funktionen verhalten. Das halte ich nicht fuer Quatsch sondern fuer konsistent.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201427</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Fri, 13 Apr 2012 07:15:27 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Fri, 13 Apr 2012 10:19:37 GMT]]></title><description><![CDATA[<p>Die Standard-Lambdas sind doch eh Müll, meine Lambda-Lib ist viel besser. <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/2201533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201533</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Fri, 13 Apr 2012 10:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Fri, 13 Apr 2012 10:32:32 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>Die Standard-Lambdas sind doch eh Müll, meine Lambda-Lib ist viel besser. <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>
</blockquote>
<p>Wenn denn der Compiler mitspielen würde. Wenn Du die Entwickler wirklich anschreiben solltest, dann sag bitte mal bescheid, was dabei rauskommt. Würde mich interessieren.</p>
<p>PS: Habs gerade im anderen Thread gelesen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201535</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 13 Apr 2012 10:32:32 GMT</pubDate></item><item><title><![CDATA[Reply to Lambdas on Fri, 13 Apr 2012 12:43:55 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>314159265358979 schrieb:</p>
<blockquote>
<p>Die Standard-Lambdas sind doch eh Müll, meine Lambda-Lib ist viel besser. <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>
</blockquote>
<p>Wenn denn der Compiler mitspielen würde. Wenn Du die Entwickler wirklich anschreiben solltest, dann sag bitte mal bescheid, was dabei rauskommt. Würde mich interessieren.</p>
<p>PS: Habs gerade im anderen Thread gelesen...</p>
</blockquote>
<p>Welchen?</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/9960">@pumuckl</a>: Ja, genau so meinte ich das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201614</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201614</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 13 Apr 2012 12:43:55 GMT</pubDate></item></channel></rss>