<?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[Alternative zu Spezialisierung von Member-Funktions-Template]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich kann ja bei Funktions-Templates eine Spezialisierung definieren.</p>
<p>Krieg ich ein ähnliches Verhalten auch bei Member-Funktionen hin?</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;

class Bar{
public:
        template&lt;int i&gt;
        void func(){
                std::cout &lt;&lt; i &lt;&lt; std::endl;
        }

        template&lt;&gt;
        void func&lt;1&gt;(){}
};

int main(){
        Bar bar;
        bar.func&lt;1&gt;();
        bar.func&lt;2&gt;();
}
</code></pre>
<pre><code>test.cpp:43:11: error: explicit specialization in non-namespace scope 'class Bar'
test.cpp:44:15: error: template-id 'func&lt;1&gt;' in declaration of primary template
</code></pre>
<p>Also so scheint es ja nicht zu gehen, aber gibt es einen Workaround?<br />
Also generell experimentier ich ein bisschen mit variadic templates rum, wo es mir hilfreich erscheint.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291120/alternative-zu-spezialisierung-von-member-funktions-template</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 21:25:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291120.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Aug 2011 03:00:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 03:00:33 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich kann ja bei Funktions-Templates eine Spezialisierung definieren.</p>
<p>Krieg ich ein ähnliches Verhalten auch bei Member-Funktionen hin?</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;

class Bar{
public:
        template&lt;int i&gt;
        void func(){
                std::cout &lt;&lt; i &lt;&lt; std::endl;
        }

        template&lt;&gt;
        void func&lt;1&gt;(){}
};

int main(){
        Bar bar;
        bar.func&lt;1&gt;();
        bar.func&lt;2&gt;();
}
</code></pre>
<pre><code>test.cpp:43:11: error: explicit specialization in non-namespace scope 'class Bar'
test.cpp:44:15: error: template-id 'func&lt;1&gt;' in declaration of primary template
</code></pre>
<p>Also so scheint es ja nicht zu gehen, aber gibt es einen Workaround?<br />
Also generell experimentier ich ein bisschen mit variadic templates rum, wo es mir hilfreich erscheint.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104697</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 11 Aug 2011 03:00:33 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 03:11:37 GMT]]></title><description><![CDATA[<p>argh...</p>
<p>Man kann auch einfach an eine Nicht-Member-Funktion delegieren und<br />
dort die Fallunterscheidung machen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>EDIT:<br />
Gut, dass ich es nichtmal brauche ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104698</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 11 Aug 2011 03:11:37 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 09:26:15 GMT]]></title><description><![CDATA[<p>Geht eigentlich...</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;

class Bar {
public:
        template&lt;int i&gt;
        void func(){
                std::cout &lt;&lt; i &lt;&lt; std::endl;
        }
};

template&lt;&gt;
void Bar::func&lt;1&gt;(){}

int main(){
        Bar bar;
        bar.func&lt;1&gt;();
        bar.func&lt;2&gt;();
}
</code></pre>
<p>...aber das <a href="http://www.gotw.ca/publications/mill17.htm" rel="nofollow">Spezialisieren von Funktionstemplates ist böse</a>. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2104778</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104778</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 11 Aug 2011 09:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 10:40:38 GMT]]></title><description><![CDATA[<p>krümelkacker schrieb:</p>
<blockquote>
<p>Geht eigentlich...</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;

class Bar {
public:
        template&lt;int i&gt;
        void func(){
                std::cout &lt;&lt; i &lt;&lt; std::endl;
        }
};

template&lt;&gt;
void Bar::func&lt;1&gt;(){}

int main(){
        Bar bar;
        bar.func&lt;1&gt;();
        bar.func&lt;2&gt;();
}
</code></pre>
<p>...aber das <a href="http://www.gotw.ca/publications/mill17.htm" rel="nofollow">Spezialisieren von Funktionstemplates ist böse</a>. <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>
</blockquote>
<p>Danke krümelkacker!<br />
Genau den Artikel hatte ich vorher schon gesehen, aber man will ja trotzdem mal was testen <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>
<p>und wie krieg ich es hin, wenn ich zudem eine Template-Klasse habe:</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;

template&lt;typename T&gt;
class Bar {
public:
        template&lt;int i&gt;
        void func(){
                std::cout &lt;&lt; i &lt;&lt; std::endl;
        }
};

template&lt;typename T&gt;
template&lt;&gt;
void Bar&lt;T&gt;::func&lt;1&gt;(){}

int main(){
        Bar&lt;int&gt; bar;
        bar.func&lt;1&gt;();
        bar.func&lt;2&gt;();
}
</code></pre>
<pre><code>test.cpp:14:10: error: invalid explicit specialization before '&gt;' token
test.cpp:14:10: error: enclosing class templates are not explicitly specialized
test.cpp:15:6: error: template-id 'func&lt;1&gt;' for 'void Bar&lt;T&gt;::func()' does not match any template declaration
</code></pre>
<p>Also wenn ich typename hier auf z.B. zusätzlich auf int festlege, funkt es.</p>
<pre><code class="language-cpp">template&lt;&gt;
template&lt;&gt;
void Bar&lt;int&gt;::func&lt;1&gt;(){}
</code></pre>
<p>Aber ich würde gerne das typename T behalten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104813</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104813</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 11 Aug 2011 10:40:38 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 18:34:01 GMT]]></title><description><![CDATA[<p>Du kannst ein member template einer template Klasse nur dann explizit spezialisieren, wenn auch die Klasse explizit spezialisiert ist (ich meine aber, dass man das in vc++10 nicht machen muss)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2104997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2104997</guid><dc:creator><![CDATA[GorbGorb]]></dc:creator><pubDate>Thu, 11 Aug 2011 18:34:01 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 18:47:22 GMT]]></title><description><![CDATA[<p>GorbGorb schrieb:</p>
<blockquote>
<p>Du kannst ein member template einer template Klasse nur dann explizit spezialisieren, wenn auch die Klasse explizit spezialisiert ist (ich meine aber, dass man das in vc++10 nicht machen muss)</p>
</blockquote>
<p>Sowas hatte ich fast schon erwartet.</p>
<p>Danke GorbGorb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105004</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 11 Aug 2011 18:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 19:50:36 GMT]]></title><description><![CDATA[<p>Nimm statt Spezialisierung Überladung und verwende den Trick, den ich dir <a href="http://www.c-plusplus.net/forum/290594" rel="nofollow">letztes Mal</a> gezeigt habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105029</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 11 Aug 2011 19:50:36 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 20:18:58 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nimm statt Spezialisierung Überladung und verwende den Trick, den ich dir <a href="http://www.c-plusplus.net/forum/290594" rel="nofollow">letztes Mal</a> gezeigt habe.</p>
</blockquote>
<p>So gehts natürlich auch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Manchmal denkt man einfach zu kompliziert oder will krampfhaft kucken, was alles möglich ist <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>Danke für den Hinweis!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105040</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Thu, 11 Aug 2011 20:18:58 GMT</pubDate></item><item><title><![CDATA[Reply to Alternative zu Spezialisierung von Member-Funktions-Template on Thu, 11 Aug 2011 20:24:52 GMT]]></title><description><![CDATA[<p>Vermeide einfach Funktionstemplate-Spezialisierung, mit Überladung bist du immer flexibler. Manchmal musst du dafür eine etwas unschönere Aufrufsyntax in Kauf nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2105046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2105046</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 11 Aug 2011 20:24:52 GMT</pubDate></item></channel></rss>