<?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[lebensdauer von rueckgabe werten (stichwort: alias)]]></title><description><![CDATA[<p>kleine verständisfrage zu rückegabtypen in verbindung mit aliasen:</p>
<pre><code class="language-cpp">class Klass{ 
public: 
  Klass() : m_i(20) { m_vec.resize(10,30); }

  int foo() { return 10; }
  int&amp; refFoo() { return m_i; }

  std::vector&lt;int&gt;  vecfoo()    { std::vector&lt;int&gt; tmp(10,-50); return tmp; }
  std::vector&lt;int&gt;&amp; refVecFoo() { return m_vec; }

  int m_i;
  std::vector&lt;int&gt; m_vec;
};

int main()
{
   Klass a;

   //alias auf referenz ist natürlich kein thema
   int&amp; alias1 = a.refFoo();

   //alias ist nicht standardkonform, da lebensdauer 
   //von rueckgabewert undefiniert -&gt; compilerfehler (ausser bei cl ;-) )
   int&amp; alias2 = a.foo();

   //wie sieht es mit sowas aus:
   //ist das std-konform?
   std::cout &lt;&lt; (int)a.vecFoo().size() &lt;&lt; std::endl;
   //oder muss ich hier    
   std::vector&lt;int&gt; kopie = a.vecFoo();
   std::cout &lt;&lt; (int)kopie().size() &lt;&lt; std::endl; //machen?

   //das hier auf jeden fall
   std::cout &lt;&lt; (int)a.vecRefFoo().size() &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/199623/lebensdauer-von-rueckgabe-werten-stichwort-alias</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 16:50:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199623.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Dec 2007 11:59:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to lebensdauer von rueckgabe werten (stichwort: alias) on Wed, 05 Dec 2007 11:59:00 GMT]]></title><description><![CDATA[<p>kleine verständisfrage zu rückegabtypen in verbindung mit aliasen:</p>
<pre><code class="language-cpp">class Klass{ 
public: 
  Klass() : m_i(20) { m_vec.resize(10,30); }

  int foo() { return 10; }
  int&amp; refFoo() { return m_i; }

  std::vector&lt;int&gt;  vecfoo()    { std::vector&lt;int&gt; tmp(10,-50); return tmp; }
  std::vector&lt;int&gt;&amp; refVecFoo() { return m_vec; }

  int m_i;
  std::vector&lt;int&gt; m_vec;
};

int main()
{
   Klass a;

   //alias auf referenz ist natürlich kein thema
   int&amp; alias1 = a.refFoo();

   //alias ist nicht standardkonform, da lebensdauer 
   //von rueckgabewert undefiniert -&gt; compilerfehler (ausser bei cl ;-) )
   int&amp; alias2 = a.foo();

   //wie sieht es mit sowas aus:
   //ist das std-konform?
   std::cout &lt;&lt; (int)a.vecFoo().size() &lt;&lt; std::endl;
   //oder muss ich hier    
   std::vector&lt;int&gt; kopie = a.vecFoo();
   std::cout &lt;&lt; (int)kopie().size() &lt;&lt; std::endl; //machen?

   //das hier auf jeden fall
   std::cout &lt;&lt; (int)a.vecRefFoo().size() &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1415232</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415232</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 05 Dec 2007 11:59:00 GMT</pubDate></item><item><title><![CDATA[Reply to lebensdauer von rueckgabe werten (stichwort: alias) on Wed, 05 Dec 2007 12:27:19 GMT]]></title><description><![CDATA[<p>Der Rückgabewert einer Funktion überlebt zumindest bis zum Ende des Ausdrucks, in dem die Funktion aufgerufen wurde. Und an einen const-Referenz Parameter kannst du auch eine temporäre Variable übergeben.</p>
<p>Oder im Klartext: Die erste Variante ist standardkonform.</p>
<p>(das Problem bei &quot;int&amp; alias = a.Foo();&quot; ist, daß der Alias das Ende dieser Anweisung überlebt - die Variable, auf die er verweist, aber nicht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415235</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 05 Dec 2007 12:27:19 GMT</pubDate></item><item><title><![CDATA[Reply to lebensdauer von rueckgabe werten (stichwort: alias) on Wed, 05 Dec 2007 14:27:30 GMT]]></title><description><![CDATA[<p>danke, CStoll!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1415316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1415316</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 05 Dec 2007 14:27:30 GMT</pubDate></item></channel></rss>