<?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[Error: Teilspezialisierung des Funktionstemplates ist nicht erlaubt]]></title><description><![CDATA[<p>Hallo<br />
ich wollte mich ein bisschen mit Metaprogrammierung beschäftigen und wollte nun eine Schleife machen, die mir Zuweisungen macht.<br />
Also wenn ich zwei int-arrays habe der selben Länge N wollte ich mit</p>
<pre><code>meta_assign&lt;int, length&gt;(array1, array2)
</code></pre>
<p>den zweiten array in den ersten kopieren.<br />
Dazu habe ich nun geschrieben:</p>
<pre><code class="language-cpp">template&lt;class T, int N&gt;
inline void meta_assign(T* a, T* b)
{
    meta_assign&lt;T,N-1&gt;(a,b);
    a[N] = b[N];
}

template&lt;class T&gt;
inline void meta_assign&lt;T,0&gt;(T* a, T* b) //&lt;- HIER IST DER FEHLER
{
    a[0] = b[0];
}
</code></pre>
<p>Jetzt wirft mir aber der Kompiler folgende Fehlermeldung aus:</p>
<pre><code>/home/tstorch/Source/codeblocks/Test/test.hpp|12|Fehler: Teilspezialisierung »meta_assign&lt;T, 0&gt;« des Funktionstemplates ist nicht erlaubt|
</code></pre>
<p>Ich habe jetzt keine Ahung, was ich falsch gemacht habe. Wäre nett wenn mir da einer ein bisschen auf die Sprünge helfen könnte.</p>
<p>mfg<br />
MamboKurt</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/242712/error-teilspezialisierung-des-funktionstemplates-ist-nicht-erlaubt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 20 Sep 2026 21:15:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/242712.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Jun 2009 12:33:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Error: Teilspezialisierung des Funktionstemplates ist nicht erlaubt on Sun, 07 Jun 2009 12:33:57 GMT]]></title><description><![CDATA[<p>Hallo<br />
ich wollte mich ein bisschen mit Metaprogrammierung beschäftigen und wollte nun eine Schleife machen, die mir Zuweisungen macht.<br />
Also wenn ich zwei int-arrays habe der selben Länge N wollte ich mit</p>
<pre><code>meta_assign&lt;int, length&gt;(array1, array2)
</code></pre>
<p>den zweiten array in den ersten kopieren.<br />
Dazu habe ich nun geschrieben:</p>
<pre><code class="language-cpp">template&lt;class T, int N&gt;
inline void meta_assign(T* a, T* b)
{
    meta_assign&lt;T,N-1&gt;(a,b);
    a[N] = b[N];
}

template&lt;class T&gt;
inline void meta_assign&lt;T,0&gt;(T* a, T* b) //&lt;- HIER IST DER FEHLER
{
    a[0] = b[0];
}
</code></pre>
<p>Jetzt wirft mir aber der Kompiler folgende Fehlermeldung aus:</p>
<pre><code>/home/tstorch/Source/codeblocks/Test/test.hpp|12|Fehler: Teilspezialisierung »meta_assign&lt;T, 0&gt;« des Funktionstemplates ist nicht erlaubt|
</code></pre>
<p>Ich habe jetzt keine Ahung, was ich falsch gemacht habe. Wäre nett wenn mir da einer ein bisschen auf die Sprünge helfen könnte.</p>
<p>mfg<br />
MamboKurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722702</guid><dc:creator><![CDATA[MamboKurt]]></dc:creator><pubDate>Sun, 07 Jun 2009 12:33:57 GMT</pubDate></item><item><title><![CDATA[Reply to Error: Teilspezialisierung des Funktionstemplates ist nicht erlaubt on Sun, 07 Jun 2009 12:48:32 GMT]]></title><description><![CDATA[<p>E0173: The C++ database found no answer to your question. Please try again later.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722713</guid><dc:creator><![CDATA[C++Forumbot]]></dc:creator><pubDate>Sun, 07 Jun 2009 12:48:32 GMT</pubDate></item><item><title><![CDATA[Reply to Error: Teilspezialisierung des Funktionstemplates ist nicht erlaubt on Sun, 07 Jun 2009 12:52:50 GMT]]></title><description><![CDATA[<p>Steht doch da auf ganz klarem Deutsch.. Teilspezialisierung von Funktionstemplates sind nicht erlaubt..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722715</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 07 Jun 2009 12:52:50 GMT</pubDate></item><item><title><![CDATA[Reply to Error: Teilspezialisierung des Funktionstemplates ist nicht erlaubt on Sun, 07 Jun 2009 13:23:23 GMT]]></title><description><![CDATA[<p>ok</p>
<p>ich hab das jetzt mit klassen-templates gemacht. jetzt hab ich aber noch eine andere frage.</p>
<p>ich will eine template-matrix-klasse schreiben. also mit template&lt;int N&gt;, wobei N die dimension ist. die matrix soll dann N^2 einträge habe. gibt es eine möglich keit beim konstruktor die initialisierung der einträge aus dem rumpf raus zu holen.</p>
<p>im momen siehts so aus:</p>
<pre><code class="language-cpp">template&lt;int N, class T&gt;
class meta_assign{
private:
    enum { go = (N-1) != 0 };

public:
    static inline void f(T* a, T* b)
    {
         meta_assign&lt;go ? (N-1) : 0,T&gt;::f(a,b);
         a[N] = b[N];
    }
};

template&lt;class T&gt;
class meta_assign&lt;0,T&gt;{
public:
    static inline void f(T* a, T* b)
    {
        a[0] = b[0];
    }
};

template&lt;class T,int N&gt;
class Matrix
{
    private:
        int dimension;
        T entries[N][N];

    public:

        Matrix(T* entries)
        : dimension(N)
        {
            meta_assign&lt;N*N-1, T&gt;::f(*this-&gt;entries, entries);
        }
};
</code></pre>
<p>ich möchte aber, dass ich entries genau wie dimension noch vor dem rumpf initialisiere.</p>
<p>mfg<br />
MamboKurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1722731</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1722731</guid><dc:creator><![CDATA[MamboKurt]]></dc:creator><pubDate>Sun, 07 Jun 2009 13:23:23 GMT</pubDate></item></channel></rss>