<?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[Iteratoren auf alle möglichen Container]]></title><description><![CDATA[<p>Hallo liebe Containerfreunde!<br />
Ich habe irgendwie öfter das Problem, dass ich eine Funktion habe, die etwas mit einer &quot;Sammlung&quot; eines Datentyps machen soll. Allerdings macht die Funktion nur für einen Datentyp Sinn.<br />
Wie macht ihr so etwas? Optimal wäre es ohne Templates (Compilezeit..), aber auch wenn man es mit Templates macht:</p>
<pre><code class="language-cpp">template&lt;typename It&gt;
void foo(It begin, It end)
</code></pre>
<p>Wie macht man dem Compiler möglichst hübsch klar, dass *It == Typ gelten muss? Meine einzige Idee wäre ein static_assert(std::is_same&lt;decltype(*begin), Type&gt;::value, &quot;Only Type&quot;);<br />
Habt ihr da schönere Ideen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295727/iteratoren-auf-alle-möglichen-container</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 07:59:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295727.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 20 Nov 2011 13:42:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Iteratoren auf alle möglichen Container on Sun, 20 Nov 2011 13:42:18 GMT]]></title><description><![CDATA[<p>Hallo liebe Containerfreunde!<br />
Ich habe irgendwie öfter das Problem, dass ich eine Funktion habe, die etwas mit einer &quot;Sammlung&quot; eines Datentyps machen soll. Allerdings macht die Funktion nur für einen Datentyp Sinn.<br />
Wie macht ihr so etwas? Optimal wäre es ohne Templates (Compilezeit..), aber auch wenn man es mit Templates macht:</p>
<pre><code class="language-cpp">template&lt;typename It&gt;
void foo(It begin, It end)
</code></pre>
<p>Wie macht man dem Compiler möglichst hübsch klar, dass *It == Typ gelten muss? Meine einzige Idee wäre ein static_assert(std::is_same&lt;decltype(*begin), Type&gt;::value, &quot;Only Type&quot;);<br />
Habt ihr da schönere Ideen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146592</guid><dc:creator><![CDATA[PillePalleIstBelegt]]></dc:creator><pubDate>Sun, 20 Nov 2011 13:42:18 GMT</pubDate></item><item><title><![CDATA[Reply to Iteratoren auf alle möglichen Container on Sun, 20 Nov 2011 13:47:31 GMT]]></title><description><![CDATA[<p>Das macht in den seltensten Fällen Sinn, darum prüft man es i.d.R. einfach gar nicht, bzw. lässt es einfach den Compiler prüfen.<br />
Du kannst ja mal ein reales Beispiel zeigen.. Das wurde ansonsten aber auch schon sehr oft hier gefragt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2146593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146593</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 20 Nov 2011 13:47:31 GMT</pubDate></item><item><title><![CDATA[Reply to Iteratoren auf alle möglichen Container on Sun, 20 Nov 2011 14:40:01 GMT]]></title><description><![CDATA[<ol>
<li>Wie du gezeigt hast mit static_assert und z.B. decltype</li>
<li></li>
</ol>
<pre><code class="language-cpp">template&lt;typename It, typename std::enable_if&lt;std::is_same&lt;typename std::iterator_traits&lt;It&gt;::value_type, MyType&gt;::value, bool&gt;::type = true&gt;
void foo(It begin, It end)
</code></pre>
<ol start="3">
<li>Nichts tun und dem Compiler einfach Fehlermeldungen werfen lassen, wenn der value_type die durchgeführten Operationen nicht unterstützt.</li>
</ol>
<p>Die Unterschiede:</p>
<ol>
<li>wirft einfach einen Compilerfehler, wenn die Funktion gerufen wird.</li>
<li>lässt die Funktion garnicht erst am Überladungsset teilnehmen, d.h. du könntest sie anderweitig überladen, sie wird auf keinen Fall gerufen, wenn der Typ nicht passt.</li>
<li>Du kriegst einen (zugegebenermaßen etwas obskuren) Compilerfehler, wenn der tatsächliche value_typ nicht die verwendeten Operationen anbietet. Das heißt, auch andere Typen funktionieren, wenn sie das passende Interface anbieten.</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/2146609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2146609</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 20 Nov 2011 14:40:01 GMT</pubDate></item></channel></rss>