<?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[Test failed]]></title><description><![CDATA[<p>Bin ich ein Esel?</p>
<pre><code class="language-cpp">#include &lt;type_traits&gt;

        std::result_of&lt;void()&gt;::type f() {}

        int main(){}
</code></pre>
<p><a href="http://ideone.com/sGXeR8" rel="nofollow">http://ideone.com/sGXeR8</a></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/340361/test-failed</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 04:09:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/340361.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 Nov 2016 22:32:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Test failed on Wed, 02 Nov 2016 22:32:33 GMT]]></title><description><![CDATA[<p>Bin ich ein Esel?</p>
<pre><code class="language-cpp">#include &lt;type_traits&gt;

        std::result_of&lt;void()&gt;::type f() {}

        int main(){}
</code></pre>
<p><a href="http://ideone.com/sGXeR8" rel="nofollow">http://ideone.com/sGXeR8</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513945</guid><dc:creator><![CDATA[failed]]></dc:creator><pubDate>Wed, 02 Nov 2016 22:32:33 GMT</pubDate></item><item><title><![CDATA[Reply to Test failed on Thu, 03 Nov 2016 01:06:05 GMT]]></title><description><![CDATA[<p>überleg dir mal, wie du result of nutzen würdest:</p>
<pre><code class="language-cpp">struct X {
  int operator() () { return 0; }
};

result_of_t&lt;X()&gt; x = 42; //decltype(x) ist int!
</code></pre>
<p>was ist aber &quot;X()&quot;? &quot;X()&quot; ist der typ einer funktion, die keine argumente übernimmt und ein X zurückgibt, also so etwas:</p>
<pre><code class="language-cpp">X foo () { }
</code></pre>
<p>hier ist eine ganze ebene template-magie dahinter.<br />
kurz: result_of versucht etwas über den return-type eines dings herausgefunden, für das ein operator() aufgerufen werden kann. dafür simuliert es, aus einem typ wie <code>X(int)</code> ein objekt vom typ X zu konstruieren (unter verwendung von <code>declval</code> ) und darauf operator() mit <code>declval</code> s der funktionsparameter aus <code>X(int)</code> - in diesem fall int, in deinem fall - keine - aufzurufen.<br />
da man aber void nicht - auch nicht per <code>declval</code> als funktionsobjekt verwenden kann, haut das nicht hin und weil result_of SFINAE-freundlich ist, gibt es den typ &quot;type&quot; einfach nicht.</p>
<p>das, was du offenbar willst, wäre ein simples:</p>
<pre><code class="language-cpp">decltype(void()) f () {}
</code></pre>
<p>und nichts verrücktes:</p>
<pre><code class="language-cpp">using foo = int(*)();
result_of&lt;foo()&gt;::type i = 42;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2513952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513952</guid><dc:creator><![CDATA[dove]]></dc:creator><pubDate>Thu, 03 Nov 2016 01:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to Test failed on Thu, 03 Nov 2016 01:21:06 GMT]]></title><description><![CDATA[<p>Ah, krass.</p>
<p>Na das hätt ich jetzt echt nicht gedacht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513953</guid><dc:creator><![CDATA[failed]]></dc:creator><pubDate>Thu, 03 Nov 2016 01:21:06 GMT</pubDate></item><item><title><![CDATA[Reply to Test failed on Thu, 03 Nov 2016 14:33:47 GMT]]></title><description><![CDATA[<p>Du hast <code>result_of</code> missverstanden: Es bestimmt nicht den Rückgabetyp eines Funktionstypen, sondern den Typ eines Ausdrucks: <code>result_of_t&lt;X(…)&gt;</code> ist der Typ eines Ausdrucks in dem eine Entität vom Typ <code>X</code> mit Argumenten der Typen <code>…</code> aufgerufen wird. E.g. <code>result_of_t&lt;std::function&lt;void(int)&gt;(int)&gt;</code> ist <code>void</code> .</p>
<p>In deinem Fall hieße das, dass es eine Entität vom Typ <code>void</code> gibt, was nicht möglich ist.<sup>1</sup> Möchtest du den Rückgabetyp einer Funktion extrahieren, wäre wohl<a href="http://en.cppreference.com/w/cpp/utility/functional/function" rel="nofollow"> <code>std::function&lt;void()&gt;::result_type</code> </a>am simpelsten (ein eigenes alias template würde das aber deutlich verkürzen).</p>
<p><sup>1</sup> und selbst wenn <a href="http://wg21.link/P0146" rel="nofollow">P0146</a> angenommen wird, kann man <code>void</code> nicht aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2513999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2513999</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 03 Nov 2016 14:33:47 GMT</pubDate></item></channel></rss>