<?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[per decltype den Rückgabetyp bestimmen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich mache gerade die ersten Schritte in C++11 und habe schon ein Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Ich habe eine Funktion, die zwei Parameter entgegennimmt und abhängig von den Parametertypen einen bestimmten Rückgabetyp haben soll. Wenn <code>lhs</code> kleiner als <code>rhs</code> ist soll der Rückgabetyp <code>T</code> sein, sonst <code>U</code> . Wie muss ich den Ausdruck in <code>decltype</code> formulieren, um das zu erreichen?</p>
<pre><code>template&lt;typename T, typename U&gt;
auto minimum( const T&amp; lhs, const U&amp; rhs ) -&gt; decltype( hm? )
{
   if( lhs &lt; rhs ) return lhs;
   else            return rhs;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/338841/per-decltype-den-rückgabetyp-bestimmen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 02:52:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338841.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 14 Jul 2016 13:34:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 13:34:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich mache gerade die ersten Schritte in C++11 und habe schon ein Problem <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /><br />
Ich habe eine Funktion, die zwei Parameter entgegennimmt und abhängig von den Parametertypen einen bestimmten Rückgabetyp haben soll. Wenn <code>lhs</code> kleiner als <code>rhs</code> ist soll der Rückgabetyp <code>T</code> sein, sonst <code>U</code> . Wie muss ich den Ausdruck in <code>decltype</code> formulieren, um das zu erreichen?</p>
<pre><code>template&lt;typename T, typename U&gt;
auto minimum( const T&amp; lhs, const U&amp; rhs ) -&gt; decltype( hm? )
{
   if( lhs &lt; rhs ) return lhs;
   else            return rhs;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2502327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502327</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 14 Jul 2016 13:34:43 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 14:01:00 GMT]]></title><description><![CDATA[<p>Nun, ich glaube nicht, dass dein Vorhaben möglich ist.<br />
lhs und rhs sind erst zur Laufzeit bekannt und decltype ist reine Compiler-Magie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502331</guid><dc:creator><![CDATA[Sackgasse!]]></dc:creator><pubDate>Thu, 14 Jul 2016 14:01:00 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 14:06:35 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<p>Wenn <code>lhs</code> kleiner als <code>rhs</code> ist soll der Rückgabetyp <code>T</code> sein, sonst <code>U</code> . Wie muss ich den Ausdruck in <code>decltype</code> formulieren, um das zu erreichen?</p>
</blockquote>
<p>Die Werte von lhs und rhs sind erst zur Laufzeit bekannt, der Typ des Rückgabewerts einer Funktion muss aber zur Compiletime festgelegt werden. Was du willst ist also rein prinzipiell unmöglich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502334</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 14 Jul 2016 14:06:35 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 14:15:57 GMT]]></title><description><![CDATA[<p>Autsch, stimmt. Dann behelfe ich mir mit <code>decltype( T{} - U{} )</code> , das sollte eigentlich auch reichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502338</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502338</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 14 Jul 2016 14:15:57 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 14:30:07 GMT]]></title><description><![CDATA[<p>Wieso eigentlich nicht einfach <code>std::min()</code> nehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502343</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 14 Jul 2016 14:30:07 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 14:35:05 GMT]]></title><description><![CDATA[<p>3 Bemerkungen:<br />
- ich würde vermutlich <code>decltype(lhs - rhs)</code> (oder + stat -, wenn das bei dir dasselbe ist) bevorzugen statt <code>T{}</code> und <code>U{}</code><br />
- ggf. kann deine Funktion zu unerwarteten Konvertierungen führen (deswegen ist bei std::min auch 2x derselbe Typ)<br />
- Es gibt auch <a href="http://www.cplusplus.com/reference/type_traits/common_type/" rel="nofollow">common_type</a>, falls das für dich gerade passend ist</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502345</guid><dc:creator><![CDATA[wob]]></dc:creator><pubDate>Thu, 14 Jul 2016 14:35:05 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 14:41:40 GMT]]></title><description><![CDATA[<p>Oder einfach:</p>
<pre><code class="language-cpp">template&lt;typename T, typename U&gt; 
auto minimum(const T&amp; lhs, const U&amp; rhs)
{
  return lhs &lt; rhs ? lhs : rhs;
}
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502346</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 14 Jul 2016 14:41:40 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 14:55:39 GMT]]></title><description><![CDATA[<p>naja, es ist schon etwas schwieriger <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Es ist nicht ein Datentyp, sondern sowas zwei vektoren. Die Funktion soll einen Ergebnisvektor bilden, die das kleinste Element der jeweiligen Position enthält.</p>
<pre><code>template&lt;typename T, typename U&gt;
static auto mininum( const std::vector&lt;T&gt;&amp; lhs, const std::vector&lt;U&gt;&amp; rhs ) -&gt;  std::vector&lt;decltype( T{} - U{} )&gt;
{
   using R = decltype( T{} - U{} );
   std::vector&lt;R&gt; tmp( lhs );
   std::transform( tmp.begin(), tmp.end(), rhs.begin(), tmp.begin(), []( const T&amp; v1, const U&amp; v2 ) 
      {
         if( v1 &lt; v2 ) return v1;
         else          return v2;
      }
   );
   return tmp;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2502348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502348</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 14 Jul 2016 14:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 15:00:43 GMT]]></title><description><![CDATA[<p>wie wär's damit:</p>
<pre><code class="language-cpp">using R = decltype(lhs &lt; rhs ? lhs : rhs);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2502349</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502349</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Thu, 14 Jul 2016 15:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to per decltype den Rückgabetyp bestimmen on Thu, 14 Jul 2016 15:07:34 GMT]]></title><description><![CDATA[<p>Ich mach mir da morgen mal in Ruhe Gedanken drüber.<br />
Auf jeden Fall schon mal Danke an alle für die Denkanstöße.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2502351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2502351</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Thu, 14 Jul 2016 15:07:34 GMT</pubDate></item></channel></rss>