<?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[Lambda und Constexpr - Nested Function workaround gesucht]]></title><description><![CDATA[<p>Der neue GCC bietet ja endlich Constexpr und Lambdas an.<br />
Leider habe ich aber festgestellt das Lambdas keine Constexpr sind.<br />
Also geht folgender Code auch nicht:</p>
<pre><code class="language-cpp">template&lt;class T&gt; constexpr auto Do( T const&amp; X ) -&gt; decltype(X())
{
  return X();
}

template&lt;uint I&gt; class Test{};

Test&lt; Do( [](){return 1;} ) &gt; X;  // fehler Lambda ist kein constexpr
</code></pre>
<p>Kennt jemand ein Workaround dazu?</p>
<p>Eigentlich hab ich mir mit dem neuen GCC erhofft das man den ganzen Umweg über pseudo-nested-functions ersparen könnte...</p>
<p>Oder kennt jemand ne gute möglichkeit eingebette funktionen zu erstellen die eine Bestimmte Schnittstelle erfüllen müssen und auf bestimmte Variablen von der übergeordneten Funktion zugreifen könnten?</p>
<p>Anwendung fände es in der Metaprogramierung zB. Generische Schleifen<br />
gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/285161/lambda-und-constexpr-nested-function-workaround-gesucht</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 13:05:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/285161.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 15 Apr 2011 10:56:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lambda und Constexpr - Nested Function workaround gesucht on Fri, 15 Apr 2011 10:57:36 GMT]]></title><description><![CDATA[<p>Der neue GCC bietet ja endlich Constexpr und Lambdas an.<br />
Leider habe ich aber festgestellt das Lambdas keine Constexpr sind.<br />
Also geht folgender Code auch nicht:</p>
<pre><code class="language-cpp">template&lt;class T&gt; constexpr auto Do( T const&amp; X ) -&gt; decltype(X())
{
  return X();
}

template&lt;uint I&gt; class Test{};

Test&lt; Do( [](){return 1;} ) &gt; X;  // fehler Lambda ist kein constexpr
</code></pre>
<p>Kennt jemand ein Workaround dazu?</p>
<p>Eigentlich hab ich mir mit dem neuen GCC erhofft das man den ganzen Umweg über pseudo-nested-functions ersparen könnte...</p>
<p>Oder kennt jemand ne gute möglichkeit eingebette funktionen zu erstellen die eine Bestimmte Schnittstelle erfüllen müssen und auf bestimmte Variablen von der übergeordneten Funktion zugreifen könnten?</p>
<p>Anwendung fände es in der Metaprogramierung zB. Generische Schleifen<br />
gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2049794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049794</guid><dc:creator><![CDATA[Speed]]></dc:creator><pubDate>Fri, 15 Apr 2011 10:57:36 GMT</pubDate></item><item><title><![CDATA[Reply to Lambda und Constexpr - Nested Function workaround gesucht on Fri, 15 Apr 2011 11:38:54 GMT]]></title><description><![CDATA[<p>Ok, hab ne akzeptable möglichkeit gefunden; man definiert einfach in der funktion einen constexpr functor dessen member const sind.</p>
<pre><code class="language-cpp">constexpr T Func(Param...X)
{
class Lambda
{
 Param...
 constexpr U operator()(...){return ...}
};

return another_constexpr_Func( Lambda{X...} )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2049813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2049813</guid><dc:creator><![CDATA[Speed]]></dc:creator><pubDate>Fri, 15 Apr 2011 11:38:54 GMT</pubDate></item></channel></rss>