<?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[Operator-Lookup]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich möchte nebenbei die Implementierung des Cassowary-Algorithmus in ein C++11-Gewand refaktorisieren, aber dazu zählt ersteinmal, den Steinzeitcode zum Kompilieren zu bewegen. Hierbei habe ich gerade mit Compiler-Fehlern zu kämpfen, die aus einer komischen Konvertierungs-Kette bei binären Operatoren entstehen.</p>
<p>Hier mal runtergebrochen:</p>
<pre><code class="language-cpp">class ClVariable;	// hat keine (Konvertierungs-)Operatoren

template&lt; typename T &gt;
class ClGenericLinearExpression  {
public:
	ClGenericLinearExpression(T num = 0.0);
	ClGenericLinearExpression(ClVariable clv, T value = 1.0, T constant = 0.0);
	//...

	friend ClGenericLinearExpression&lt;T&gt; operator-(const ClGenericLinearExpression&lt;T&gt; &amp;e1, const ClGenericLinearExpression&lt;T&gt; &amp;e2);
};

ClVariable v;
double lower;

auto some = ClGenericLinearExpression&lt;double&gt;(v - lower);
// v soll offenbar als ClGenericLinearerExpression&lt;double&gt; gematcht werden
// lower soll offenbar in ClGenericLinearExpression&lt;double&gt; gematcht werden
</code></pre>
<p>Soll (darf/durfte) das jemals kompilieren? Ich bekomme hier überall Fehler, dass keine passenden Operatoren gefunden werden können. Ich renne hier auf VC++2013, falls das eine Auswirkung darauf haben könnte...<br />
Nirgendwo anders im Projekt werden irgendwelche Operatoren definiert, also bedeuetet es für mich, dass das aus irgendeinem Grund irgendwie für den Autor funktioniert hat? Mich würde es irgendwie ziemlich überraschen, wenn das funktionieren sollte...</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328922/operator-lookup</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 07:39:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328922.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Oct 2014 15:46:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator-Lookup on Fri, 31 Oct 2014 15:46:32 GMT]]></title><description><![CDATA[<p>Hallo Leute,<br />
ich möchte nebenbei die Implementierung des Cassowary-Algorithmus in ein C++11-Gewand refaktorisieren, aber dazu zählt ersteinmal, den Steinzeitcode zum Kompilieren zu bewegen. Hierbei habe ich gerade mit Compiler-Fehlern zu kämpfen, die aus einer komischen Konvertierungs-Kette bei binären Operatoren entstehen.</p>
<p>Hier mal runtergebrochen:</p>
<pre><code class="language-cpp">class ClVariable;	// hat keine (Konvertierungs-)Operatoren

template&lt; typename T &gt;
class ClGenericLinearExpression  {
public:
	ClGenericLinearExpression(T num = 0.0);
	ClGenericLinearExpression(ClVariable clv, T value = 1.0, T constant = 0.0);
	//...

	friend ClGenericLinearExpression&lt;T&gt; operator-(const ClGenericLinearExpression&lt;T&gt; &amp;e1, const ClGenericLinearExpression&lt;T&gt; &amp;e2);
};

ClVariable v;
double lower;

auto some = ClGenericLinearExpression&lt;double&gt;(v - lower);
// v soll offenbar als ClGenericLinearerExpression&lt;double&gt; gematcht werden
// lower soll offenbar in ClGenericLinearExpression&lt;double&gt; gematcht werden
</code></pre>
<p>Soll (darf/durfte) das jemals kompilieren? Ich bekomme hier überall Fehler, dass keine passenden Operatoren gefunden werden können. Ich renne hier auf VC++2013, falls das eine Auswirkung darauf haben könnte...<br />
Nirgendwo anders im Projekt werden irgendwelche Operatoren definiert, also bedeuetet es für mich, dass das aus irgendeinem Grund irgendwie für den Autor funktioniert hat? Mich würde es irgendwie ziemlich überraschen, wenn das funktionieren sollte...</p>
<p>Viele Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425137</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Fri, 31 Oct 2014 15:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to Operator-Lookup on Fri, 31 Oct 2014 16:31:19 GMT]]></title><description><![CDATA[<p>decimad schrieb:</p>
<blockquote>
<p>Hallo Leute,<br />
ich möchte nebenbei die Implementierung des Cassowary-Algorithmus in ein C++11-Gewand refaktorisieren, aber dazu zählt ersteinmal, den Steinzeitcode zum Kompilieren zu bewegen. Hierbei habe ich gerade mit Compiler-Fehlern zu kämpfen, die aus einer komischen Konvertierungs-Kette bei binären Operatoren entstehen.</p>
<p>Hier mal runtergebrochen:</p>
<pre><code class="language-cpp">class ClVariable;	// hat keine (Konvertierungs-)Operatoren

template&lt; typename T &gt;
class ClGenericLinearExpression  {
public:
	ClGenericLinearExpression(T num = 0.0);
	ClGenericLinearExpression(ClVariable clv, T value = 1.0, T constant = 0.0);
	//...

	friend ClGenericLinearExpression&lt;T&gt; operator-(const ClGenericLinearExpression&lt;T&gt; &amp;e1, const ClGenericLinearExpression&lt;T&gt; &amp;e2);
};

ClVariable v;
double lower;

auto some = ClGenericLinearExpression&lt;double&gt;(v - lower);
// v soll offenbar als ClGenericLinearerExpression&lt;double&gt; gematcht werden
// lower soll offenbar in ClGenericLinearExpression&lt;double&gt; gematcht werden
</code></pre>
<p>Soll (darf/durfte) das jemals kompilieren?</p>
</blockquote>
<p>vermutlich nicht. Der gezeigte Operator kann bloss per ADL gefunden werden, und selbst wenn er sichtbar wäre, Kann der Compiler ja nicht plötzlich einen geeigneten Parameter T herbeizaubern.</p>
<pre><code>auto some = ClGenericLinearExpression&lt;double&gt;(v) - lower;
</code></pre>
<p>wäre kein Problem.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425150</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 31 Oct 2014 16:31:19 GMT</pubDate></item><item><title><![CDATA[Reply to Operator-Lookup on Fri, 31 Oct 2014 16:51:07 GMT]]></title><description><![CDATA[<p>Ich hab's mir schon gedacht! Danke Dir. Werde für's erste die nötigen Operatoren hinzufügen, dann kann der Spaß beginnen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425153</guid><dc:creator><![CDATA[decimad]]></dc:creator><pubDate>Fri, 31 Oct 2014 16:51:07 GMT</pubDate></item></channel></rss>