<?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[Template Spezialisierung für const]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte für ein Template eine Spezialisierung für den Fall,<br />
dass ein const-Parameter übergeben wird.<br />
Dabei möchte ich jedoch nicht für einen bestimmten Typen spezialisieren,<br />
sondern generell (std::list, std::vector, ...)</p>
<p>Ist sowas möglich?</p>
<p>Wenn ja, wie?</p>
<p>Hier ist in etwa der Code wie ich es mir gedacht habe...<br />
Natürlich funkt es so nicht, sonst bräuchte ich ja nicht fragen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
template&lt;typename T&gt;
class Foo{
public:
        Foo(T&amp; t){
                std::cout &lt;&lt; &quot;no const&quot; &lt;&lt; std::endl;
        }
};

template&lt;&gt;
class Foo&lt;const typename T&gt;{
public:
        Foo(const T&amp; f){
                std::cout &lt;&lt; &quot;const&quot; &lt;&lt; std::endl;
        }
};

int main(int argc, char** arg) {
        std::string s;
        Foo&lt;std::string&gt; foo1(s); // no const
        Foo&lt;const std::string&gt; foo2(s); // const
        return 0;
}
</code></pre>
<p>Gruß,<br />
Mark</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284030/template-spezialisierung-für-const</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 09:24:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284030.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Mar 2011 09:54:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template Spezialisierung für const on Thu, 24 Mar 2011 09:54:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte für ein Template eine Spezialisierung für den Fall,<br />
dass ein const-Parameter übergeben wird.<br />
Dabei möchte ich jedoch nicht für einen bestimmten Typen spezialisieren,<br />
sondern generell (std::list, std::vector, ...)</p>
<p>Ist sowas möglich?</p>
<p>Wenn ja, wie?</p>
<p>Hier ist in etwa der Code wie ich es mir gedacht habe...<br />
Natürlich funkt es so nicht, sonst bräuchte ich ja nicht fragen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
template&lt;typename T&gt;
class Foo{
public:
        Foo(T&amp; t){
                std::cout &lt;&lt; &quot;no const&quot; &lt;&lt; std::endl;
        }
};

template&lt;&gt;
class Foo&lt;const typename T&gt;{
public:
        Foo(const T&amp; f){
                std::cout &lt;&lt; &quot;const&quot; &lt;&lt; std::endl;
        }
};

int main(int argc, char** arg) {
        std::string s;
        Foo&lt;std::string&gt; foo1(s); // no const
        Foo&lt;const std::string&gt; foo2(s); // const
        return 0;
}
</code></pre>
<p>Gruß,<br />
Mark</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039271</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039271</guid><dc:creator><![CDATA[Mark81]]></dc:creator><pubDate>Thu, 24 Mar 2011 09:54:01 GMT</pubDate></item><item><title><![CDATA[Reply to Template Spezialisierung für const on Thu, 24 Mar 2011 10:00:21 GMT]]></title><description><![CDATA[<p>Stichwort partielle Spezialisierung:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class Foo {/* Normalfall */};

template &lt;class T&gt;
class Foo&lt;T const&gt; { /* const-Spezialfall*/ };
</code></pre>
<p><a href="http://ideone.com/Qnrd6" rel="nofollow">http://ideone.com/Qnrd6</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039281</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 24 Mar 2011 10:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to Template Spezialisierung für const on Thu, 24 Mar 2011 10:15:26 GMT]]></title><description><![CDATA[<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039292</guid><dc:creator><![CDATA[Mark81]]></dc:creator><pubDate>Thu, 24 Mar 2011 10:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to Template Spezialisierung für const on Thu, 24 Mar 2011 10:19:36 GMT]]></title><description><![CDATA[<p>Hat es einen Grund, warum du das typename in class geändert hast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039294</guid><dc:creator><![CDATA[Mark81]]></dc:creator><pubDate>Thu, 24 Mar 2011 10:19:36 GMT</pubDate></item><item><title><![CDATA[Reply to Template Spezialisierung für const on Thu, 24 Mar 2011 10:26:29 GMT]]></title><description><![CDATA[<p>Es ist kürzer <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>An dieser Stelle sind <code>class</code> und <code>typename</code> gleichbedeutend. Es lässt sich also nur mit Geschmack begründen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039304</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039304</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Thu, 24 Mar 2011 10:26:29 GMT</pubDate></item><item><title><![CDATA[Reply to Template Spezialisierung für const on Thu, 24 Mar 2011 12:50:02 GMT]]></title><description><![CDATA[<p>Es ist nicht immer egal, ob typename oder class, es gibt Fälle, die zwar praktisch kaum vorkommen, in denen man class verwenden muss, nämlich bei template-template Parametern, template-template-template-Parametern, usw...:</p>
<pre><code class="language-cpp">template
&lt;
    template &lt;typename&gt; class T // Hier muss class stehen
&gt;
...
</code></pre>
<p>Ich persönlich verwende immer typename, da es für mich die Intention besser ausdrück, einen Typen haben zu wollen. Kürze des Codes empfinde ich nicht als Argument, ein Code sollte gut lesbar sein und nicht kurz. Da stören mich die paar Buchstaben nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2039384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2039384</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Thu, 24 Mar 2011 12:50:02 GMT</pubDate></item></channel></rss>