<?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[template argument bei operatoren explizit angeben]]></title><description><![CDATA[<p>hallo, wie kann man template argumente bei operatoren explizit angeben?</p>
<p>betroffene zeile:</p>
<pre><code>std::for_each(Result.begin(), Result.end(), std::cout.operator&lt;&lt;); // funktioniert nicht weil mehrdeutigkeit
</code></pre>
<pre><code>std::for_each(Result.begin(), Result.end(), std::cout.operator&lt;&lt; &lt;char&gt;); // funktioniert nicht weil syntaktisch inkorrekt
</code></pre>
<p>gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319527/template-argument-bei-operatoren-explizit-angeben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 10:10:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319527.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 Aug 2013 08:23:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template argument bei operatoren explizit angeben on Thu, 22 Aug 2013 08:23:12 GMT]]></title><description><![CDATA[<p>hallo, wie kann man template argumente bei operatoren explizit angeben?</p>
<p>betroffene zeile:</p>
<pre><code>std::for_each(Result.begin(), Result.end(), std::cout.operator&lt;&lt;); // funktioniert nicht weil mehrdeutigkeit
</code></pre>
<pre><code>std::for_each(Result.begin(), Result.end(), std::cout.operator&lt;&lt; &lt;char&gt;); // funktioniert nicht weil syntaktisch inkorrekt
</code></pre>
<p>gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347700</guid><dc:creator><![CDATA[flabbahz]]></dc:creator><pubDate>Thu, 22 Aug 2013 08:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to template argument bei operatoren explizit angeben on Thu, 22 Aug 2013 08:41:10 GMT]]></title><description><![CDATA[<p>Das klappt eh nicht wie du es dir gedacht hast, denn sämtliche STL Algorithmen basieren darauf,d ass sie mit func() aufgerufen werden können. (Eventuell halt mit ein oder zwei Parametern).</p>
<p>&lt;&lt; für cout müsste aber so aufgerufen werden:</p>
<pre><code>cout.operator&lt;&lt;(param);
// oder
operator&lt;&lt;(cout, param);
</code></pre>
<p>In beiden Fällen wäre der Templateparameter deduzierbar durch den auszugebenden Parameter.</p>
<p>Die zweite Version fällt auch schon dadurch flach, dass for_each etwa so aufgebaut ist:</p>
<pre><code>// ...
for( ; first != last; ++first)
    Func(*first);
// ...
</code></pre>
<p>Es wird also in keinem Fall ein zweiter Parameter mit übergeben.</p>
<p>Es gibt natürlich noch std::function und std::bind, aber für so einen simplen Fall wie cout auf alle Elemente anzuwenden reicht eine kleine Funktion oder ein kleiner Funktor.</p>
<pre><code>template&lt;class T&gt;
void print(T const&amp; x)
{
    cout &lt;&lt; x;
}

// ...
for_each(std::begin(Result), std::end(Result), print);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2347705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347705</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 22 Aug 2013 08:41:10 GMT</pubDate></item><item><title><![CDATA[Reply to template argument bei operatoren explizit angeben on Thu, 22 Aug 2013 08:46:57 GMT]]></title><description><![CDATA[<p>okay das ist verständlich. dass operator&lt;&lt; sowohl als methode als auch als freie funktion definiert werden kann ist mir in dem zusammenhang nicht in den sinn gekommen, leuchtet natürlich ein.</p>
<p>sehe ich das richtig dass man das problem auch mit einer lambda funktion lösen kann?</p>
<p>und rein interessenshalber: kann man dennoch ein spezifiziertes operator template als funktionszeiger übergeben? wenn ja, wie sieht die syntax aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347709</guid><dc:creator><![CDATA[flabbahz]]></dc:creator><pubDate>Thu, 22 Aug 2013 08:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to template argument bei operatoren explizit angeben on Thu, 22 Aug 2013 08:49:23 GMT]]></title><description><![CDATA[<p>Du hast noch zwei weitere Möglichkeiten:</p>
<pre><code>copy(Result.begin(), Result.end(), ostream_iterator&lt;char&gt;(cout, &quot;,&quot;));
</code></pre>
<p>oder über Lambdas</p>
<pre><code>for_each(Result.begin(), Result.end(), [](char res)
{
    cout &lt;&lt; res &lt;&lt; &quot;,&quot;;
});
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2347713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347713</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 22 Aug 2013 08:49:23 GMT</pubDate></item><item><title><![CDATA[Reply to template argument bei operatoren explizit angeben on Thu, 22 Aug 2013 08:51:04 GMT]]></title><description><![CDATA[<p>flabbahz schrieb:</p>
<blockquote>
<p>sehe ich das richtig dass man das problem auch mit einer lambda funktion lösen kann?</p>
</blockquote>
<p>Klar, Lambdas sind ja im Prinzip nix anderes als normale Funktionen, nur halt ohne expliziten Namen. Hat halt so nen Funktionen Code Style.</p>
<p>(Wobei ich immer noch nicht verstehe, was an Funktionaler Programmierung so toll sein soll, und was da eigentlich die Krux ist Oo?!)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347714</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347714</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 22 Aug 2013 08:51:04 GMT</pubDate></item><item><title><![CDATA[Reply to template argument bei operatoren explizit angeben on Thu, 22 Aug 2013 09:30:43 GMT]]></title><description><![CDATA[<blockquote>
<p>Klar, Lambdas sind ja im Prinzip nix anderes als normale Funktionen</p>
</blockquote>
<p>Lambda-Ausdrücke sind sog. closure-Objekte, die den <em>function-call-operator</em> überladen.</p>
<p>@KasF:<br />
Wobei hier ein <code>ostreambuf_iterator</code> viel besser passt, das ist viel effizienter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347731</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 22 Aug 2013 09:30:43 GMT</pubDate></item><item><title><![CDATA[Reply to template argument bei operatoren explizit angeben on Thu, 22 Aug 2013 10:09:00 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Wobei hier ein <code>ostreambuf_iterator</code> viel besser passt, das ist viel effizienter.</p>
</blockquote>
<p>Das stimmt. Ich wollte aber gerne ein Trennzeichen mitgeben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347748</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 22 Aug 2013 10:09:00 GMT</pubDate></item></channel></rss>