<?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[Operatoren mithilfe von Templates generieren, macht es Sinn?]]></title><description><![CDATA[<p>Hi,</p>
<p>Macht es Sinn, Operatoren wie z.B. &lt;=, != etc. mithilfe von Templates global zu überladen?</p>
<p>Ich dachte mir das in etwa so:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator!=(const T&amp; lhs, const U&amp; rhs)
{
	return !(lhs == rhs);
}

template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
	if (lhs &lt; rhs)
		return false;
	return lhs != rhs;
}

template&lt;class T, class U&gt;
inline bool operator&lt;=(const T&amp; lhs, const U&amp; rhs)
{
	return !(lhs &gt; rhs);
}

template&lt;class T, class U&gt;
inline bool operator&gt;=(const T&amp; lhs, const U&amp; rhs)
{
	return !(lhs &lt; rhs);
}
</code></pre>
<p>Natürlich unter der Vorraussetzung, dass &lt; und == gegeben ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Cheers<br />
Cyres</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/306619/operatoren-mithilfe-von-templates-generieren-macht-es-sinn</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 18:04:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306619.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Aug 2012 23:16:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Thu, 02 Aug 2012 23:18:02 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Macht es Sinn, Operatoren wie z.B. &lt;=, != etc. mithilfe von Templates global zu überladen?</p>
<p>Ich dachte mir das in etwa so:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator!=(const T&amp; lhs, const U&amp; rhs)
{
	return !(lhs == rhs);
}

template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
	if (lhs &lt; rhs)
		return false;
	return lhs != rhs;
}

template&lt;class T, class U&gt;
inline bool operator&lt;=(const T&amp; lhs, const U&amp; rhs)
{
	return !(lhs &gt; rhs);
}

template&lt;class T, class U&gt;
inline bool operator&gt;=(const T&amp; lhs, const U&amp; rhs)
{
	return !(lhs &lt; rhs);
}
</code></pre>
<p>Natürlich unter der Vorraussetzung, dass &lt; und == gegeben ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Cheers<br />
Cyres</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238099</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238099</guid><dc:creator><![CDATA[Cyres]]></dc:creator><pubDate>Thu, 02 Aug 2012 23:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Thu, 02 Aug 2012 23:39:18 GMT]]></title><description><![CDATA[<p>Cyres schrieb:</p>
<blockquote>
<p>Macht es Sinn, Operatoren wie z.B. &lt;=, != etc. mithilfe von Templates global zu überladen?</p>
</blockquote>
<p>nein. Sobald du eine Klasse hast, die bereits Operatoren überlädt, riskierst du Mehrdeutigkeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238100</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 02 Aug 2012 23:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Thu, 02 Aug 2012 23:46:02 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort, schade eigentlich, aber, klar, leuchtet ein!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238101</guid><dc:creator><![CDATA[Cyres]]></dc:creator><pubDate>Thu, 02 Aug 2012 23:46:02 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 00:15:39 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Cyres schrieb:</p>
<blockquote>
<p>Macht es Sinn, Operatoren wie z.B. &lt;=, != etc. mithilfe von Templates global zu überladen?</p>
</blockquote>
<p>nein. Sobald du eine Klasse hast, die bereits Operatoren überlädt, riskierst du Mehrdeutigkeiten.</p>
</blockquote>
<p>sinn ist es ja nicht, jede klasse davon abzuleiten.<br />
ich habe etliche klassen so gebaut(nur &lt; und == überladen) und dann erben lassen.<br />
wenn man operatoren definiert, die in der basisklasse noch mal definiert werden, ist das halt an und für sich schon fail <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238104</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Fri, 03 Aug 2012 00:15:39 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 00:24:35 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>Cyres schrieb:</p>
<blockquote>
<p>Macht es Sinn, Operatoren wie z.B. &lt;=, != etc. mithilfe von Templates global zu überladen?</p>
</blockquote>
<p>nein. Sobald du eine Klasse hast, die bereits Operatoren überlädt, riskierst du Mehrdeutigkeiten.</p>
</blockquote>
<p>sinn ist es ja nicht, jede klasse davon abzuleiten.<br />
ich habe etliche klassen so gebaut(nur &lt; und == überladen) und dann erben lassen.<br />
wenn man operatoren definiert, die in der basisklasse noch mal definiert werden, ist das halt an und für sich schon fail <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
</blockquote>
<p>Ich denke er meint eher Klassen allgemein, die schon Operatoren definiert und die Templates überschreiben dann vorher definierte andere Operatoren.</p>
<p>Was meinst du mit Ableiten, eine Oberklasse, die nur diese Operatoren anbietet und alle benötigten Klassen erben einfach davon? Auch ne gute Idee, und ein so schlechtes Klassendesign habe ich auch nicht, dass operatoren in derived-Klassen Überschrieben werden, kam mir jedenfalls bis Dato nicht unter - außer bei Komilitonen, aber die sind ja gerade außen vor <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238105</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238105</guid><dc:creator><![CDATA[Cyres]]></dc:creator><pubDate>Fri, 03 Aug 2012 00:24:35 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 00:35:40 GMT]]></title><description><![CDATA[<p>Mit boost.operators lassen sich Operatoren gezielt fuer eine Klasse generieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238107</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Fri, 03 Aug 2012 00:35:40 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 00:45:24 GMT]]></title><description><![CDATA[<p>Kellerautomat schrieb:</p>
<blockquote>
<p>Mit boost.operators lassen sich Operatoren gezielt fuer eine Klasse generieren.</p>
</blockquote>
<p>Gibt auch einen Artikel darueber von pumuckl.<br />
<strong>Darueber hinaus sei auch<a href="http://www.cplusplus.com/reference/std/utility/rel_ops/" rel="nofollow"> <code>std::rel_ops</code> </a>nicht unerwaehnt.</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238112</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 03 Aug 2012 00:45:24 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 02:45:43 GMT]]></title><description><![CDATA[<p>Danke für die zahlreichen Antworten, hat mir sehr geholfen <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/2238117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238117</guid><dc:creator><![CDATA[Cyres]]></dc:creator><pubDate>Fri, 03 Aug 2012 02:45:43 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 07:08:01 GMT]]></title><description><![CDATA[<p>Cyres schrieb:</p>
<blockquote>
<p>Hi,<br />
...</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
	if (lhs &lt; rhs)
		return false;
	return lhs != rhs;
}
</code></pre>
</blockquote>
<p>Das ginge einfacher:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
        return rhs &lt; lhs;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2238148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238148</guid><dc:creator><![CDATA[ich bins]]></dc:creator><pubDate>Fri, 03 Aug 2012 07:08:01 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 07:22:44 GMT]]></title><description><![CDATA[<p>ich bins schrieb:</p>
<blockquote></blockquote>
<p>Das ginge einfacher:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
        return rhs &lt; lhs;
}
</code></pre>
<p>[/quote]</p>
<p>ähm... nein. Was ist bei Gleichheit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238153</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Fri, 03 Aug 2012 07:22:44 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 07:45:10 GMT]]></title><description><![CDATA[<p>ich bins schrieb:</p>
<blockquote>
<p>Das ginge einfacher:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
        return rhs &lt; lhs;
}
</code></pre>
</blockquote>
<p>Dieser Operator macht aber genau das Gegenteil vom Erwarteten.<br />
Eher</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
        return !(rhs &lt;= lhs);
}
</code></pre>
<p>wenn man schon &gt; nicht direkt verwenden will.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238165</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 03 Aug 2012 07:45:10 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 07:53:10 GMT]]></title><description><![CDATA[<pre><code>&lt;(lhs,rhs)
&gt;(lhs,rhs)  =&gt;  rhs&lt;lhs
&lt;=(lhs,rhs) =&gt;  !(rhs&lt;lhs)
&gt;=(lhs,rhs) =&gt;  !(lhs&lt;rhs)
==(lhs,rhs) =&gt;  !(lhs&lt;rhs)&amp;&amp;!(rhs&lt;lhs)
!=(lhs,rhs) =&gt;  !(lhs==rhs)  =&gt; (lhs&lt;rhs)||(rhs&lt;lhs)
</code></pre>
<p>Wenn nicht eine gewisse Symmetrie auftritt, ist wahrscheinlich ein Fehler gemacht worden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238169</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 03 Aug 2012 07:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 08:06:21 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>ich bins schrieb:</p>
<blockquote>
<p>Das ginge einfacher:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
        return rhs &lt; lhs;
}
</code></pre>
</blockquote>
<p>Dieser Operator macht aber genau das Gegenteil vom Erwarteten.<br />
Eher</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
        return !(rhs &lt;= lhs);
}
</code></pre>
<p>wenn man schon &gt; nicht direkt verwenden will.</p>
</blockquote>
<p>Also wenn lhs 17 und rhs 5 ist, dann ist 17&gt;5 true und 5&lt;17 auch true. 5&lt;=17 ergibt true und damit !(5&lt;=17) false.</p>
<p>Wenn A&gt;B =&gt; B&lt;A.</p>
<p>Oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238173</guid><dc:creator><![CDATA[ich bins]]></dc:creator><pubDate>Fri, 03 Aug 2012 08:06:21 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 08:36:27 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>ich bins schrieb:</p>
<blockquote></blockquote>
<p>Das ginge einfacher:</p>
<pre><code class="language-cpp">template&lt;class T, class U&gt;
inline bool operator&gt;(const T&amp; lhs, const U&amp; rhs)
{
        return rhs &lt; lhs;
}
</code></pre>
</blockquote>
<p>ähm... nein. Was ist bei Gleichheit?[/quote]</p>
<p>was soll dann sein?<br />
lhs &gt; rhs genau dann wenn rhs &lt; lhs. alles gut so wie es ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238182</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238182</guid><dc:creator><![CDATA[qweqwrsadfsdf]]></dc:creator><pubDate>Fri, 03 Aug 2012 08:36:27 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren mithilfe von Templates generieren, macht es Sinn? on Fri, 03 Aug 2012 08:38:48 GMT]]></title><description><![CDATA[<p>Hast recht, ich hab nicht auf rhs und lhs geachtet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2238183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2238183</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 03 Aug 2012 08:38:48 GMT</pubDate></item></channel></rss>