<?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[Fehlermeldung, wenn Template-Code verwendet wird]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie kann ich eine Fehlermeldung ausgeben, wenn bestimmter Code eingebunden wird?</p>
<p>Der folgende Code wird ja wegen der Template-Spezialisierung nicht verwendet, aber trotzdem meldet der Compiler einen Fehler.</p>
<p>Er soll aber nur einen Fehler melden, wenn dieser Code auch eingefügt wird.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt;
class Foo{
public:
        void foo(){
                //std::cout &lt;&lt; &quot;T&quot; &lt;&lt; std::endl;
                #error not defined for T
        }
};

template&lt;&gt;
class Foo&lt;int&gt;{
public:
        void foo(){
                std::cout &lt;&lt; &quot;int&quot; &lt;&lt; std::endl;
        }
};

int main(){
        Foo&lt;int&gt; foo;
        foo.foo();
}
</code></pre>
<p>Wie kann ich mein gewünschtes Verhalten verwirklichen?<br />
Kann ich auch irgendetwas verwirklichen, dass er den entsprechenden Klassenamen ausgibt, statt T?</p>
<p>Gruß,<br />
MaPoX</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284503/fehlermeldung-wenn-template-code-verwendet-wird</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 23:17:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284503.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Apr 2011 08:19:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 08:19:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wie kann ich eine Fehlermeldung ausgeben, wenn bestimmter Code eingebunden wird?</p>
<p>Der folgende Code wird ja wegen der Template-Spezialisierung nicht verwendet, aber trotzdem meldet der Compiler einen Fehler.</p>
<p>Er soll aber nur einen Fehler melden, wenn dieser Code auch eingefügt wird.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt;
class Foo{
public:
        void foo(){
                //std::cout &lt;&lt; &quot;T&quot; &lt;&lt; std::endl;
                #error not defined for T
        }
};

template&lt;&gt;
class Foo&lt;int&gt;{
public:
        void foo(){
                std::cout &lt;&lt; &quot;int&quot; &lt;&lt; std::endl;
        }
};

int main(){
        Foo&lt;int&gt; foo;
        foo.foo();
}
</code></pre>
<p>Wie kann ich mein gewünschtes Verhalten verwirklichen?<br />
Kann ich auch irgendetwas verwirklichen, dass er den entsprechenden Klassenamen ausgibt, statt T?</p>
<p>Gruß,<br />
MaPoX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2043995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2043995</guid><dc:creator><![CDATA[MaPoX]]></dc:creator><pubDate>Sun, 03 Apr 2011 08:19:35 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 09:00:21 GMT]]></title><description><![CDATA[<p>mh du könntest template spezialisierungen machen die einen compiler fehler verursachen. weil templates werden ja nur übersetzt wenn sie gebraucht werden, dementsprechend werden ein paar templates kompiliert und genutzt während deine eine spezialisierung einen fehler verursacht wenn sie genutzt wird</p>
<p>beispiel:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
T foo(T const&amp; x)
{
     return x;
}

template&lt;&gt;
char foo(char const&amp; x)
{
     .;sfreturn;;
}

int main()
{
    cout &lt;&lt; foo&lt;int&gt;(5) &lt;&lt; endl; // ok
    cout &lt;&lt; foo&lt;double&gt;(1.0) &lt;&lt; endl; // ok
    cout &lt;&lt; foo&lt;char&gt;('s') &lt;&lt; endl; // fehler!
    return 0x0;
}
</code></pre>
<p>wobei sicher bin ich mir nicht, da ich nicht die nötige übung und erfahrung habe mit templates</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044009</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sun, 03 Apr 2011 09:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 09:13:33 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>mh du könntest template spezialisierungen machen die einen compiler fehler verursachen. weil templates werden ja nur übersetzt wenn sie gebraucht werden, dementsprechend werden ein paar templates kompiliert und genutzt während deine eine spezialisierung einen fehler verursacht wenn sie genutzt wird</p>
</blockquote>
<p>Ungültigen Code kann ich natürlich dort reinschreiben, aber ich würde eine Fehlermeldung bevorzugen <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>btw: Warum die Fehlermeldung immer erscheint ist mir klar...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044011</guid><dc:creator><![CDATA[MaPoX]]></dc:creator><pubDate>Sun, 03 Apr 2011 09:13:33 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 09:19:30 GMT]]></title><description><![CDATA[<p>Ich würde einen Linker-Fehler erzeugen und keinen Compile-Fehler.</p>
<pre><code class="language-cpp">template&lt;&gt;
char foo(char const&amp; x);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2044018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044018</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sun, 03 Apr 2011 09:19:30 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 09:46:18 GMT]]></title><description><![CDATA[<p>HighLigerBiMBam schrieb:</p>
<blockquote>
<p>Ich würde einen Linker-Fehler erzeugen und keinen Compile-Fehler.</p>
<pre><code class="language-cpp">template&lt;&gt;
char foo(char const&amp; x);
</code></pre>
</blockquote>
<p>Find ich nett.<br />
Erweiterung zu Linkerfehlermeldung mit Freitext:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
T foo(T const&amp; x)
{
     return x;
}

void volkard_ist_doof();

template&lt;&gt;
inline char foo(char const&amp; x){
    volkard_ist_doof();
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2044029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044029</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 03 Apr 2011 09:46:18 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 09:50:56 GMT]]></title><description><![CDATA[<p>Gleicher Fehler nur mit anderer Signatur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044030</guid><dc:creator><![CDATA[HighLigerBiMBam]]></dc:creator><pubDate>Sun, 03 Apr 2011 09:50:56 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 09:53:54 GMT]]></title><description><![CDATA[<p>Jo...<br />
Linker-Fehler klingt gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Signatur-Missbrauch <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2044033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044033</guid><dc:creator><![CDATA[MaPoX]]></dc:creator><pubDate>Sun, 03 Apr 2011 09:53:54 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 12:20:48 GMT]]></title><description><![CDATA[<p>MaPoX schrieb:</p>
<blockquote>
<p>Jo...<br />
Linker-Fehler klingt gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Nein, Linkerfehler ist schlecht. Lieber den Fehler bereits zur Kompilierzeit erkennen. Sonst kriegst du z.B. Probleme, wenn du eine statische Bibliothek erzeugst, deren Symbole erst beim Anwender aufgelöst werden.</p>
<p><code>static_assert</code> ist, was du suchst. Im momentanen C++-Standard kannst du auf Boost oder Loki zurückgreifen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044101</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 03 Apr 2011 12:20:48 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, wenn Template-Code verwendet wird on Sun, 03 Apr 2011 12:53:36 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>MaPoX schrieb:</p>
<blockquote>
<p>Jo...<br />
Linker-Fehler klingt gut <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Nein, Linkerfehler ist schlecht. Lieber den Fehler bereits zur Kompilierzeit erkennen. Sonst kriegst du z.B. Probleme, wenn du eine statische Bibliothek erzeugst, deren Symbole erst beim Anwender aufgelöst werden.</p>
<p><code>static_assert</code> ist, was du suchst. Im momentanen C++-Standard kannst du auf Boost oder Loki zurückgreifen.</p>
</blockquote>
<p>Guter Einwand <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2044119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2044119</guid><dc:creator><![CDATA[MaPoX]]></dc:creator><pubDate>Sun, 03 Apr 2011 12:53:36 GMT</pubDate></item></channel></rss>