<?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[Verständnissproblem bei Template-Funktion]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename T,std::size_t N&gt;
inline std::size_t array_size(T (&amp;)[N])
{
	return N;
}
</code></pre>
<p>Hallo,<br />
ich versteh bei diesem Code oben nicht ganz was <strong>T (&amp;)[N]</strong> bedeutet<br />
bzw. warum sich folgender Code nicht kompilieren lässt:</p>
<pre><code class="language-cpp">template&lt;typename T,std::size_t N&gt;
inline std::size_t array_size(T Array[N])
{
	return N;
}
</code></pre>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232630/verständnissproblem-bei-template-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 07:37:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232630.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 25 Jan 2009 02:03:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnissproblem bei Template-Funktion on Sun, 25 Jan 2009 02:03:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;typename T,std::size_t N&gt;
inline std::size_t array_size(T (&amp;)[N])
{
	return N;
}
</code></pre>
<p>Hallo,<br />
ich versteh bei diesem Code oben nicht ganz was <strong>T (&amp;)[N]</strong> bedeutet<br />
bzw. warum sich folgender Code nicht kompilieren lässt:</p>
<pre><code class="language-cpp">template&lt;typename T,std::size_t N&gt;
inline std::size_t array_size(T Array[N])
{
	return N;
}
</code></pre>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651834</guid><dc:creator><![CDATA[Programmierer]]></dc:creator><pubDate>Sun, 25 Jan 2009 02:03:02 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnissproblem bei Template-Funktion on Sun, 25 Jan 2009 04:23:42 GMT]]></title><description><![CDATA[<p><code>T (&amp;)[N]</code> ist zu <code>T [N]</code> wie <code>int&amp;</code> zu <code>int</code> .</p>
<p>Die Klammern sehen da komisch aus, sind aber nötig, weil ohne Klammern wär's nunmal keine Referenz auf ein Array, sondern ein Array aus Referenzen.</p>
<p>Und <code>T [N]</code> geht nicht, weil <code>T [N]</code> in einer Parameterliste nur eine andere Schreibweise für <code>T*</code> ist. N ist dabei vollkommen beliebig, und &quot;verschwindet&quot; aus dem Typ des Parameters. Daher kann N hier auch nicht aus irgendeinem Template-Parameter deduziert werden.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">void foo(int*) {} // OK

void foo(int [10]) {} // Fehler: ist die gleiche Funktion wie foo(int*)
void foo(int [20]) {} // Fehler: immer noch gleichbedeutend mit foo(int*)
void foo(int []) {} // ...und nochmal
</code></pre>
<p>Ist verwirrend, ist aber so.</p>
<p><strong>Und merke: in C++ kann man keine Arrays by value an Funktionen übergeben. Garnicht. Niemals.</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651841</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Sun, 25 Jan 2009 04:23:42 GMT</pubDate></item></channel></rss>