<?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 operator&amp;lt;&amp;lt;]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgende Klasse</p>
<pre><code class="language-cpp">class Test
{
public:
    template&lt;typename T&gt;
    Test&amp; operator&lt;&lt;(T&amp; value) {ss &lt;&lt; value; return *this;}
private:
    std::stringstream ss;
};
</code></pre>
<p>warum reicht eine templatisierte Version vom operator&lt;&lt; nicht aus, wenn ich ein int oder double einfügen will</p>
<pre><code class="language-cpp">int main()
{
    Test t;
    t &lt;&lt; 1;
    t &lt;&lt; 1.2;
}
</code></pre>
<p>in VS 2003 muss ich noch eine spezialisierte form mit int (bzw. long) und double machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195606/template-operator-lt-lt</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 04:57:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195606.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Oct 2007 13:12:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to template operator&amp;lt;&amp;lt; on Fri, 19 Oct 2007 13:12:22 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe folgende Klasse</p>
<pre><code class="language-cpp">class Test
{
public:
    template&lt;typename T&gt;
    Test&amp; operator&lt;&lt;(T&amp; value) {ss &lt;&lt; value; return *this;}
private:
    std::stringstream ss;
};
</code></pre>
<p>warum reicht eine templatisierte Version vom operator&lt;&lt; nicht aus, wenn ich ein int oder double einfügen will</p>
<pre><code class="language-cpp">int main()
{
    Test t;
    t &lt;&lt; 1;
    t &lt;&lt; 1.2;
}
</code></pre>
<p>in VS 2003 muss ich noch eine spezialisierte form mit int (bzw. long) und double machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388556</guid><dc:creator><![CDATA[template operator]]></dc:creator><pubDate>Fri, 19 Oct 2007 13:12:22 GMT</pubDate></item><item><title><![CDATA[Reply to template operator&amp;lt;&amp;lt; on Fri, 19 Oct 2007 13:25:27 GMT]]></title><description><![CDATA[<p>template operator schrieb:</p>
<blockquote>
<p>warum reicht eine templatisierte Version vom operator&lt;&lt; nicht aus, wenn ich ein int oder double einfügen will</p>
<pre><code class="language-cpp">int main()
{
    Test t;
    t &lt;&lt; 1;
    t &lt;&lt; 1.2;
}
</code></pre>
<p>in VS 2003 muss ich noch eine spezialisierte form mit int (bzw. long) und double machen...</p>
</blockquote>
<p>dafür müßtest du das right-hand-side argument value entweder als<br />
by-const-ref oder als by-val definieren, weil du den int bzw. double<br />
wert als temporary übergibst und deswegen ein by-ref nicht möglich ist.</p>
<p>aber hier ein beispiel :</p>
<pre><code class="language-cpp">Test t;
int x = 1;
t &lt;&lt; 1;
</code></pre>
<p>sollte gehen. da du aber eh den wert des arguments in left_shift_operator<br />
nicht veränderst kannst du das ganze als by-const-ref deklarieten, dann<br />
kannst du auch wieder temporaries verwenden.</p>
<p>[cpp]<br />
struct Test{<br />
template &lt;typename rhs_t&gt;<br />
Test&amp; operator&lt;&lt;(rhs_t const&amp; rhs);<br />
};</p>
<p>ingo.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388571</guid><dc:creator><![CDATA[loehken]]></dc:creator><pubDate>Fri, 19 Oct 2007 13:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to template operator&amp;lt;&amp;lt; on Fri, 19 Oct 2007 16:16:44 GMT]]></title><description><![CDATA[<p>loehken schrieb:</p>
<blockquote>
<p>dafür müßtest du das right-hand-side argument value entweder als<br />
by-const-ref oder als by-val definieren, weil du den int bzw. double<br />
wert als temporary übergibst und deswegen ein by-ref nicht möglich ist.</p>
</blockquote>
<p>Im Prinzip richtig, die Wortwahl kann aber verbessert werden. Numerische Literale sind skalare Rvalues und als solche keine Objekte - erst recht keine temporären Objekte. Nur so ist die Argumentation auch sinnvoll - eine Übergabe per (non-const) Referenz ist an sich nicht möglich, weil von vorneherein kein Objekt existiert, an das die Referenz gebunden werden könnte <em>und</em> das Binden von Referenzen auf nicht-const (und auch ein deduziertes T&amp; wird niemals Rvalues binden, selbst wenn T ein const U ist)niemals temporäre Objekte erzeugt.<br />
Temporäre Objekte sind immer Klassenobjekte und nicht in jedem Falle Rvalues (allerdings alle Klassen-Rvalues temporäre Objete) - sie haben hier also mit dem Problem hier nicht direkt zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1388649</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388649</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 19 Oct 2007 16:16:44 GMT</pubDate></item><item><title><![CDATA[Reply to template operator&amp;lt;&amp;lt; on Fri, 19 Oct 2007 17:34:30 GMT]]></title><description><![CDATA[<p>Sagen wir einfach es geht nicht weil es sich nicht um eine lvalue handelt <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/1388683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1388683</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 19 Oct 2007 17:34:30 GMT</pubDate></item><item><title><![CDATA[Reply to template operator&amp;lt;&amp;lt; on Mon, 22 Oct 2007 08:00:17 GMT]]></title><description><![CDATA[<p>Danke für die Erklärung, leuchtet ein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1389742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1389742</guid><dc:creator><![CDATA[template operator]]></dc:creator><pubDate>Mon, 22 Oct 2007 08:00:17 GMT</pubDate></item></channel></rss>