<?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[Zeichenektte als Template-Parameter]]></title><description><![CDATA[<p>Moin,</p>
<p>kurz und bündig:<br />
Ist es irgendwie möglich einem Template eine Zeichenkette (die zur Compilezeit schon feststeht)als Parameter zu übergeben, ohne dass ich diesen in einer weiteren Struktur kapseln muss? Und wie sieht es diesbezüglich im neuen Standard aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/254003/zeichenektte-als-template-parameter</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 05:08:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/254003.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 10 Nov 2009 11:31:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeichenektte als Template-Parameter on Tue, 10 Nov 2009 11:31:18 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>kurz und bündig:<br />
Ist es irgendwie möglich einem Template eine Zeichenkette (die zur Compilezeit schon feststeht)als Parameter zu übergeben, ohne dass ich diesen in einer weiteren Struktur kapseln muss? Und wie sieht es diesbezüglich im neuen Standard aus?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805953</guid><dc:creator><![CDATA[Matzer]]></dc:creator><pubDate>Tue, 10 Nov 2009 11:31:18 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichenektte als Template-Parameter on Tue, 10 Nov 2009 12:06:42 GMT]]></title><description><![CDATA[<p>Matzer schrieb:</p>
<blockquote>
<p>Ist es irgendwie möglich einem Template eine Zeichenkette (die zur Compilezeit schon feststeht)als Parameter zu übergeben, ohne dass ich diesen in einer weiteren Struktur kapseln muss?</p>
</blockquote>
<p>Klare Antwort: jein. Templateparameter können entweder Typen oder konstanten sein, wobei letztere auf integrale Typen (Integer-Typen, bool, Pointer, enums) beschrüänkt sind. Grundsätzlich könntest du also einen const char* als Temlateparameter übergeben - was dir aber nicht viel nützt, da der Vergleich von zweimal dem gleichen Stringliteral nicht immer true ergibt (d.h. der Compiler kann das selbe Literal an wzei Stellen im Speicher ablegen und die Pointer sind daher verschieden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805966</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 10 Nov 2009 12:06:42 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichenektte als Template-Parameter on Tue, 10 Nov 2009 14:23:16 GMT]]></title><description><![CDATA[<p>Neben Werten integraler Typen sind auch andere nicht-Typen als Template-Parameter zulässig: Zeiger und Referenzen auf Objekte und Funktionen mit externer Bindung.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;const char * Text&gt;
struct ausgabe
{
  void operator()() const {
    std::cout &lt;&lt; Text &lt;&lt; '\n';
  }
};

extern const char nachricht[] = &quot;Hallo Welt!&quot;;

int main()
{
  ausgabe&lt;nachricht&gt;()();
}
</code></pre>
<p>Beachte: <code>nachricht</code> darf nur einmal in einer Übersetzungseinheit definiert werden. Die Deklaration, die man für andere TÜs in einen Header packen könnte, sieht dann so aus:</p>
<pre><code class="language-cpp">extern const char nachricht[];
</code></pre>
<p>Der Template-Parameter ist hier aber ein Zeiger und keine Zeichenkette. ausgabe&lt;&quot;Hallo&quot;&gt; wird nicht funktionieren, weil Zeichenliterale eine interne Bindung besitzen.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1806044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1806044</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Tue, 10 Nov 2009 14:23:16 GMT</pubDate></item></channel></rss>