<?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[Spinnt mein Vc++ 2005 Express Edition Compiler]]></title><description><![CDATA[<p>Hoi,</p>
<p>Ich benutze die Visual C++ 2005 Express Edition.<br />
Jetzt habe ich eine Frage.<br />
Warum compiliert er ohne Murren folgenden Code.</p>
<pre><code class="language-cpp">class foo
{
public:
    int a;
}

void(foo&amp; arg)
{
    arg.a=123;
}

int main(void)
{

    func(foo()); //&lt;------ in der Funktion verändere ich ein Attribute 
                 //aber foo() bleibt doch immer foo(), da müsste doch eg
                 //ein const noch hin oder

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/168028/spinnt-mein-vc-2005-express-edition-compiler</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 05:09:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/168028.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 17 Dec 2006 18:05:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Sun, 17 Dec 2006 18:05:12 GMT]]></title><description><![CDATA[<p>Hoi,</p>
<p>Ich benutze die Visual C++ 2005 Express Edition.<br />
Jetzt habe ich eine Frage.<br />
Warum compiliert er ohne Murren folgenden Code.</p>
<pre><code class="language-cpp">class foo
{
public:
    int a;
}

void(foo&amp; arg)
{
    arg.a=123;
}

int main(void)
{

    func(foo()); //&lt;------ in der Funktion verändere ich ein Attribute 
                 //aber foo() bleibt doch immer foo(), da müsste doch eg
                 //ein const noch hin oder

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1193603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193603</guid><dc:creator><![CDATA[asdfgfggh]]></dc:creator><pubDate>Sun, 17 Dec 2006 18:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Sun, 17 Dec 2006 18:26:16 GMT]]></title><description><![CDATA[<p>Ist kein Standard-C++, aber der VC++ erlaubt es. In der 7.1er Version warnt er allerdings, sollte er daher auch im 8er machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193612</guid><dc:creator><![CDATA[lolz]]></dc:creator><pubDate>Sun, 17 Dec 2006 18:26:16 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Sun, 17 Dec 2006 18:49:43 GMT]]></title><description><![CDATA[<p>Hm,</p>
<p>ich sehe da kein Fehler im Code. Das foo() ein temporäres Objekt ist,<br />
sieht die Funtkion nicht.</p>
<p>Mir fällt jetzt auch nichts ein, was verbieten würde ein temporäres Objekt an die Funktion zu übergeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193619</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Sun, 17 Dec 2006 18:49:43 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Sun, 17 Dec 2006 19:15:08 GMT]]></title><description><![CDATA[<p>Ich nehme an, der code soll so aussehen (damit wir über dasselbe reden):</p>
<pre><code class="language-cpp">class foo
{
public:
    int a;
};

void func(foo&amp; arg)
{
    arg.a=123;
}

int main(void)
{

    func(foo()); //&lt;------ in der Funktion verändere ich ein Attribute
                 //aber foo() bleibt doch immer foo(), da müsste doch eg
                 //ein const noch hin oder

    return 0;
}
</code></pre>
<p>Das ist, wie erwähnt, eine Spracherweiterung des Microsoft-Compilers, die wohl hauptsächlich aus Kompatibilitätsgründen zu füheren Compilerversionen beibehalten wird. Die Behauptung, dass das völlig still akzeptiert wird, ist im übrigen nicht richtig. Da ist einerseits die Level 4 Warnung C4239, zum anderen wird diese Art von Konstruktion, wie die anderen Erweiterungen von Microsoft, nicht akzeptiert, wen der Schalter /Za aktiv ist.</p>
<p>Knuddlbaer schrieb:</p>
<blockquote>
<p>Hm,</p>
<p>ich sehe da kein Fehler im Code. Das foo() ein temporäres Objekt ist,<br />
sieht die Funtkion nicht.</p>
<p>Mir fällt jetzt auch nichts ein, was verbieten würde ein temporäres Objekt an die Funktion zu übergeben.</p>
</blockquote>
<p>Temporäre Objekte sind nicht das Problem, sondern rvalues (auch wenn Ersteres in der Regel Letzteres bedeutet). Ein rvlaue kann nicht an eine Referenz auf nicht-const gebunden werden. Legal wäre zum Beispiel das hier, trotz temporärer Objekte</p>
<pre><code class="language-cpp">func(foo()=foo());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1193633</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193633</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 17 Dec 2006 19:15:08 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Sun, 17 Dec 2006 19:25:57 GMT]]></title><description><![CDATA[<p>Also der g++ meckert da immer rum und gibt Fehler aus?<br />
Wer hat jetzt &quot;mehr&quot; Recht Gnu oder Microsoft?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193639</guid><dc:creator><![CDATA[asdfgfggh]]></dc:creator><pubDate>Sun, 17 Dec 2006 19:25:57 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Sun, 17 Dec 2006 21:11:03 GMT]]></title><description><![CDATA[<p>Hoi, ich habe auch eine Frage die teils zu diesem Thema passt, deshalb wollte ich nicht noch einen neuen Threat aufmachen.</p>
<p>Wenn man per foo() ein temporäres Object erstellt, wielange bleibt dieses bestehen?</p>
<pre><code class="language-cpp">int main()
{
    func(foo()); // &lt;-Dieses foo() bleibt es so lange bestehen wie 
                 //die Funktion andauert?
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1193700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193700</guid><dc:creator><![CDATA[Ulo]]></dc:creator><pubDate>Sun, 17 Dec 2006 21:11:03 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Sun, 17 Dec 2006 22:43:45 GMT]]></title><description><![CDATA[<blockquote>
<p>Temporäre Objekte sind nicht das Problem, sondern rvalues (auch wenn Ersteres in der Regel Letzteres bedeutet). Ein rvlaue kann nicht an eine Referenz auf nicht-const gebunden werden. Legal wäre zum Beispiel das hier, trotz temporärer ObjekteC/C++ Code:<br />
func(foo()=foo());</p>
</blockquote>
<p>Ah ok, werde mich mit dem Thema l und rvalue noch mal auseinander setzen müssen.</p>
<blockquote>
<p>Wenn man per foo() ein temporäres Object erstellt, wielange bleibt dieses bestehen?</p>
</blockquote>
<p>In dem Beispiel, bis die Funktion beendet wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193739</guid><dc:creator><![CDATA[Knuddlbaer]]></dc:creator><pubDate>Sun, 17 Dec 2006 22:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Mon, 18 Dec 2006 06:27:31 GMT]]></title><description><![CDATA[<p>Ulo schrieb:</p>
<blockquote>
<p>Wenn man per foo() ein temporäres Object erstellt, wielange bleibt dieses bestehen?</p>
</blockquote>
<p>Bis zum Ende der Auswertung des vollständigen Ausrucks, in dem es steht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193797</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193797</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 18 Dec 2006 06:27:31 GMT</pubDate></item><item><title><![CDATA[Reply to Spinnt mein Vc++ 2005 Express Edition Compiler on Mon, 18 Dec 2006 11:10:00 GMT]]></title><description><![CDATA[<p>asdfgfggh schrieb:</p>
<blockquote>
<p>Also der g++ meckert da immer rum und gibt Fehler aus?<br />
Wer hat jetzt &quot;mehr&quot; Recht Gnu oder Microsoft?</p>
</blockquote>
<p>Recht wobei? Beide Compiler akzeptieren das nicht als Standard C++. Punkt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1193901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1193901</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 18 Dec 2006 11:10:00 GMT</pubDate></item></channel></rss>