<?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[Explizite Typangaben bei Tempalte-Ausgabeoperator]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt; class Printable;

template&lt;typename T&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const Printable&lt;T&gt;&amp; p)
{
	out &lt;&lt; p.value;
	return out;
}

template&lt;typename T&gt;
class Printable
{
	friend std::ostream&amp; operator&lt;&lt; &lt;T&gt;(std::ostream&amp;, const Printable&lt;T&gt;&amp;);

	public:
	Printable(T val): value(val) {}

	private:
	T value;
};

int main()
{
	Printable&lt;int&gt; pi(3);

	operator&lt;&lt;(std::cout, pi); // funktioniert
	operator&lt;&lt; &lt;int&gt;(std::cout, pi); // funktioniert nicht

	return 0;
}
</code></pre>
<p>Kann mir jemand erklären, wieso der implizite Aufruf klappt, der explizite aber nicht? Der gleiche Code funktioniert, wenn icih operator&lt;&lt; durch eine normale Template-Funktion &quot;print&quot; ersetze.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227491/explizite-typangaben-bei-tempalte-ausgabeoperator</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 22:43:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227491.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 16 Nov 2008 01:14:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Explizite Typangaben bei Tempalte-Ausgabeoperator on Sun, 16 Nov 2008 01:14:40 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt; class Printable;

template&lt;typename T&gt;
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const Printable&lt;T&gt;&amp; p)
{
	out &lt;&lt; p.value;
	return out;
}

template&lt;typename T&gt;
class Printable
{
	friend std::ostream&amp; operator&lt;&lt; &lt;T&gt;(std::ostream&amp;, const Printable&lt;T&gt;&amp;);

	public:
	Printable(T val): value(val) {}

	private:
	T value;
};

int main()
{
	Printable&lt;int&gt; pi(3);

	operator&lt;&lt;(std::cout, pi); // funktioniert
	operator&lt;&lt; &lt;int&gt;(std::cout, pi); // funktioniert nicht

	return 0;
}
</code></pre>
<p>Kann mir jemand erklären, wieso der implizite Aufruf klappt, der explizite aber nicht? Der gleiche Code funktioniert, wenn icih operator&lt;&lt; durch eine normale Template-Funktion &quot;print&quot; ersetze.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615374</guid><dc:creator><![CDATA[Rätsler]]></dc:creator><pubDate>Sun, 16 Nov 2008 01:14:40 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Typangaben bei Tempalte-Ausgabeoperator on Sun, 16 Nov 2008 02:24:58 GMT]]></title><description><![CDATA[<p>Klammern setzen:</p>
<pre><code class="language-cpp">(operator&lt;&lt; &lt;int&gt;)(std::cout, pi);
</code></pre>
<p>Ich muss aber eingestehen, dass ich zu der späten Stunde nicht mehr einen genug klaren Kopf habe, dass ich dir sagen kann, wieso. Weiss nur noch, dass die Klammern nötig waren ...</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615378</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 16 Nov 2008 02:24:58 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Typangaben bei Tempalte-Ausgabeoperator on Mon, 17 Nov 2008 07:16:43 GMT]]></title><description><![CDATA[<p>Ja, funktioniert tatsächlich! Das warum wäre jetzt natürlich noch sehr interessant.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615799</guid><dc:creator><![CDATA[Rätsler]]></dc:creator><pubDate>Mon, 17 Nov 2008 07:16:43 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Typangaben bei Tempalte-Ausgabeoperator on Mon, 17 Nov 2008 08:42:39 GMT]]></title><description><![CDATA[<p>Rätsler schrieb:</p>
<blockquote>
<p>Ja, funktioniert tatsächlich! Das warum wäre jetzt natürlich noch sehr interessant.</p>
</blockquote>
<p>Zu alter Compiler? Was hat du den für einen?<br />
Bei VC++08 funktioniert das ganze Wunderbar..</p>
<p>Zu dem warum. Ich denke mal, dass es da Probleme mit dem Parsen gibt/gab. Mittlerweile sollte das aber auch in Ordnung sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615820</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 17 Nov 2008 08:42:39 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Typangaben bei Tempalte-Ausgabeoperator on Mon, 17 Nov 2008 10:36:21 GMT]]></title><description><![CDATA[<p>Bei meinem VC++08 funktioniert das ganze nicht!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615871</guid><dc:creator><![CDATA[Rätsler]]></dc:creator><pubDate>Mon, 17 Nov 2008 10:36:21 GMT</pubDate></item><item><title><![CDATA[Reply to Explizite Typangaben bei Tempalte-Ausgabeoperator on Mon, 17 Nov 2008 10:55:01 GMT]]></title><description><![CDATA[<p>Finde leider die Quelle nicht mehr, woher ich das habe und kann daher auch nur noch Mutmassungen anstellen.<br />
g++ kompiliert es jedenfalls ohne Probleme und meiner Meinung nach, sollte ein standardkonformer Kompiler sowas auch ohne Probleme kompilieren.</p>
<p>Der MSVC könnte womöglich Probleme damit haben, weil es keine &quot;normale&quot; Funktion ist, was den Namen betrifft. Es hat Abstände und Sonderzeichen darin, wodurch die Sache nicht auf Anhieb als Funktion erkannt wird. Durch die zusätzliche Klammerung kann man dem Kompiler wohl helfen.<br />
Aber das ist eine reine Vermutung ...</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615877</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Mon, 17 Nov 2008 10:55:01 GMT</pubDate></item></channel></rss>