<?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[kosten bei template vererbung]]></title><description><![CDATA[<p>Hallo,<br />
ich frag mich gerade folgendes und finde keine Antwort und jetzt hoffe ich das mir hier jemand weiter helfen kann.</p>
<p>folgendes:</p>
<pre><code>template&lt;typename T&gt;
class Foo{ 
 T&amp; value(){return val;}

protected:
  T val;
};

template&lt;typename T&gt;
class Bar : public Foo&lt;T&gt;{ 
public:
  using value_type = T ;
};
</code></pre>
<p>ist in diesem Fall Bar 'teurer' als wenn es so implementiert wåre?</p>
<pre><code>template&lt;typename T&gt;
class Bar{ 
 T&amp; value(){return val;}
protected:
  T val;
};
</code></pre>
<p>Grund:<br />
ich könnte mit std::is_base_of Operationen für das 'Konzept' Foo machen,<br />
möchte aber keine zusätzlichen Kosten haben.</p>
<p>und mir Fällt kein anderes type_traits ein welches ich so verwenden könnte.</p>
<p>Praktisches Bsp wäre zB ein globaler minus Operator der nur für einige Typen gefunden werden soll die das 'Konzept' Foo implementieren</p>
<pre><code>template&lt;class T, class ValT = typename T::value_type&gt;
typename std::enable_if&lt; std::is_base_of&lt;Foo&lt;ValT&gt; , T&gt;::value, T&gt;::type 
operator-(const T&amp; in) 
{
    return { -in.value() };
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/320421/kosten-bei-template-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 03:41:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320421.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 27 Sep 2013 17:34:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 17:36:20 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich frag mich gerade folgendes und finde keine Antwort und jetzt hoffe ich das mir hier jemand weiter helfen kann.</p>
<p>folgendes:</p>
<pre><code>template&lt;typename T&gt;
class Foo{ 
 T&amp; value(){return val;}

protected:
  T val;
};

template&lt;typename T&gt;
class Bar : public Foo&lt;T&gt;{ 
public:
  using value_type = T ;
};
</code></pre>
<p>ist in diesem Fall Bar 'teurer' als wenn es so implementiert wåre?</p>
<pre><code>template&lt;typename T&gt;
class Bar{ 
 T&amp; value(){return val;}
protected:
  T val;
};
</code></pre>
<p>Grund:<br />
ich könnte mit std::is_base_of Operationen für das 'Konzept' Foo machen,<br />
möchte aber keine zusätzlichen Kosten haben.</p>
<p>und mir Fällt kein anderes type_traits ein welches ich so verwenden könnte.</p>
<p>Praktisches Bsp wäre zB ein globaler minus Operator der nur für einige Typen gefunden werden soll die das 'Konzept' Foo implementieren</p>
<pre><code>template&lt;class T, class ValT = typename T::value_type&gt;
typename std::enable_if&lt; std::is_base_of&lt;Foo&lt;ValT&gt; , T&gt;::value, T&gt;::type 
operator-(const T&amp; in) 
{
    return { -in.value() };
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2356054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356054</guid><dc:creator><![CDATA[kurze_frage]]></dc:creator><pubDate>Fri, 27 Sep 2013 17:36:20 GMT</pubDate></item><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 17:40:21 GMT]]></title><description><![CDATA[<blockquote>
<p>ich könnte mit std::is_base_of Operationen für das 'Konzept' Foo machen,<br />
möchte aber keine zusätzlichen Kosten haben.</p>
</blockquote>
<p>Was genau verstehst du unter Kosten?<br />
Ob es länger kompiliert?</p>
<blockquote>
<p>und mir Fällt kein anderes type_traits ein welches ich so verwenden könnte.</p>
</blockquote>
<p>Es gibt haufenweise Möglichkeiten, einen Typ von anderen zu Unterscheiden, eine Basisklasse ist nur eine davon.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2356058</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356058</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 27 Sep 2013 17:40:21 GMT</pubDate></item><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 17:58:34 GMT]]></title><description><![CDATA[<p>unter 'Kosten' meine ich zb einen vtable welcher sich im micro benchmark theoretisch bemarkbar machen könnte, oder Bar etwas grösser macht.<br />
bei keinem Template wäre das ja der Fall denke ich</p>
<p>da ich Foo als Basis aber nur als Template verwenden könnte (ohne explizit zu überladen)</p>
<pre><code>template&lt;typename T&gt;
int getval(const Foo&lt;T&gt;&amp; f) {return  f.value() ;}
</code></pre>
<p>frage ich mich ob ich diese Basisklasse ganz umsonst haben kann.</p>
<p>wenn es einen anderen Weg, ausser boost_has_member, gibt, mit c++11 möglichkeiten das 'Konzept' zu realiseren, welcher könnte das sein?<br />
mein konkreter Anwendugsfall wären alle Klassen welche Methode x und y implementiert haben sowie ein bestimmtes typedef besitzten.</p>
<p>mir ist klar das das jetzt 2 fragen geworden sind, hoff das ist kein Problem</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2356064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356064</guid><dc:creator><![CDATA[kurze_frage]]></dc:creator><pubDate>Fri, 27 Sep 2013 17:58:34 GMT</pubDate></item><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 18:00:20 GMT]]></title><description><![CDATA[<p>kurze_frage schrieb:</p>
<blockquote>
<p>wenn es einen anderen Weg, ausser boost_has_member, gibt, mit c++11 möglichkeiten das 'Konzept' zu realiseren, welcher könnte das sein?<br />
mein konkreter Anwendugsfall wären alle Klassen welche Methode x und y implementiert haben sowie ein bestimmtes typedef besitzten.</p>
<p>mir ist klar das das jetzt 2 fragen geworden sind, hoff das ist kein Problem</p>
</blockquote>
<p>Du schreibst dir dein persönliches has x und has y und has typedef, kombinierst die bedingungen via &amp;&amp; und hast dein persönliches is_concept.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2356065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356065</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 27 Sep 2013 18:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 18:03:14 GMT]]></title><description><![CDATA[<p>kurze_frage schrieb:</p>
<blockquote>
<p>vtable</p>
</blockquote>
<p>vtable gibt es nur und ausschliesslich wenn in du irgenwo &quot;virtual&quot; stehen hast. Sonst absolut nie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2356067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356067</guid><dc:creator><![CDATA[xtable]]></dc:creator><pubDate>Fri, 27 Sep 2013 18:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 18:10:03 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Du schreibst dir dein persönliches <strong>has x und has y</strong> und has typedef, kombinierst die bedingungen via &amp;&amp; und hast dein persönliches is_concept.</p>
</blockquote>
<p>und ich glaub das kann ich nicht mit board mitteln, bzw weiss nicht wie, werde es aber morgen noch mal probieren ob ich etwas finden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2356068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356068</guid><dc:creator><![CDATA[kurze_frage]]></dc:creator><pubDate>Fri, 27 Sep 2013 18:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 18:12:16 GMT]]></title><description><![CDATA[<p>xtable schrieb:</p>
<blockquote>
<p>kurze_frage schrieb:</p>
<blockquote>
<p>vtable</p>
</blockquote>
<p>vtable gibt es nur und ausschliesslich wenn in du irgenwo &quot;virtual&quot; stehen hast. Sonst absolut nie.</p>
</blockquote>
<p>ok, danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2356069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356069</guid><dc:creator><![CDATA[kurze_frage]]></dc:creator><pubDate>Fri, 27 Sep 2013 18:12:16 GMT</pubDate></item><item><title><![CDATA[Reply to kosten bei template vererbung on Fri, 27 Sep 2013 18:14:30 GMT]]></title><description><![CDATA[<p>kurze_frage schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Du schreibst dir dein persönliches <strong>has x und has y</strong> und has typedef, kombinierst die bedingungen via &amp;&amp; und hast dein persönliches is_concept.</p>
</blockquote>
<p>und ich glaub das kann ich nicht mit board mitteln, bzw weiss nicht wie, werde es aber morgen noch mal probieren ob ich etwas finden kann.</p>
</blockquote>
<p>Natürlich kannste das mit Boardmitteln, wie soll boost das sont machen?<br />
Das Stichwort hierfür ist SFINAE und das damit verbundene Überladungsauswahlverfahren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2356070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2356070</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 27 Sep 2013 18:14:30 GMT</pubDate></item></channel></rss>