<?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[Templateparameter zu String]]></title><description><![CDATA[<p>Hey Leute</p>
<p>kann man irgendwie so etwas machen wie</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void foo() 
{
	cout &lt;&lt; T &lt;&lt; endl;
}
</code></pre>
<p>sodass wenn man Beispielsweise</p>
<pre><code class="language-cpp">foo&lt;int&gt;()
</code></pre>
<p>ausführt, &quot;int&quot; ausgegeben wird?</p>
<p>Gruß <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/302136/templateparameter-zu-string</link><generator>RSS for Node</generator><lastBuildDate>Tue, 11 Aug 2026 17:17:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/302136.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 11 Apr 2012 22:08:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templateparameter zu String on Wed, 11 Apr 2012 22:09:28 GMT]]></title><description><![CDATA[<p>Hey Leute</p>
<p>kann man irgendwie so etwas machen wie</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void foo() 
{
	cout &lt;&lt; T &lt;&lt; endl;
}
</code></pre>
<p>sodass wenn man Beispielsweise</p>
<pre><code class="language-cpp">foo&lt;int&gt;()
</code></pre>
<p>ausführt, &quot;int&quot; ausgegeben wird?</p>
<p>Gruß <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200972</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Wed, 11 Apr 2012 22:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Wed, 11 Apr 2012 22:22:50 GMT]]></title><description><![CDATA[<p>Habs schon ^^</p>
<pre><code class="language-cpp">typeid(T).name()
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2200975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200975</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Wed, 11 Apr 2012 22:22:50 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Wed, 11 Apr 2012 22:22:53 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt; class T &gt;
void foo()
{
std::cout &lt;&lt; typeid( T ).name() &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2200976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200976</guid><dc:creator><![CDATA[GorbGorb]]></dc:creator><pubDate>Wed, 11 Apr 2012 22:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Wed, 11 Apr 2012 22:23:40 GMT]]></title><description><![CDATA[<p>Danke für deine Mühe <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="🙂"
    /> Habs auch gerade eben doch noch selbst gefunden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2200977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2200977</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Wed, 11 Apr 2012 22:23:40 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 05:40:28 GMT]]></title><description><![CDATA[<p>typeid(T).name() ist übrigens compilerabhängig.<br />
während VC++ da schöne Namen wie &quot;int&quot;, &quot;class std::string&quot; usw. fabriziert,<br />
kommt da beim GCC zum Beispiel &quot;i&quot; (int) oder &quot;Ss&quot; (S = std::, s = string) raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201002</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Thu, 12 Apr 2012 05:40:28 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 07:07:39 GMT]]></title><description><![CDATA[<p>Mist das hab ich jetzt gar nicht mehr getestet, hast du einen ähnlichnen, alternativen Vorschlag für den GCC?</p>
<p>Gruß <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201012</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Thu, 12 Apr 2012 07:07:39 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 07:30:34 GMT]]></title><description><![CDATA[<p>MatheStein schrieb:</p>
<blockquote>
<p>... hast du einen ähnlichen, alternativen Vorschlag für den GCC?</p>
</blockquote>
<p>im schlimmsten Fall -&gt; selbst ist der Mann!<br />
heißt z.B.:</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
struct TypeName // Default Implementierung
{
    static const char* Name() { return typeid(T).name(); }
};
#define TYPENAME( t, x ) template&lt;&gt; struct TypeName&lt; t &gt; { \
    static const char* Name() { return (x); } }

// --   hier bitte ausfüllen
TYPENAME( int, &quot;ein int&quot; );
TYPENAME( double, &quot;Fliesskomma&quot; );
struct Foo;
TYPENAME( Foo, &quot;meine tolle Klasse&quot; );
// usw. ...

template&lt; typename T &gt;
void foo()
{
    std::cout &lt;&lt; TypeName&lt; T &gt;::Name() &lt;&lt; std::endl;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201021</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 12 Apr 2012 07:30:34 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 07:32:20 GMT]]></title><description><![CDATA[<p>Habe hier auch gerade etwas gefunden:</p>
<pre><code class="language-cpp">abi::__cxa_demangle(typeid(int).name(), 0, 0, &amp;status)
</code></pre>
<p>Offensichtlich kann man hier mit die internen Namen des GCC in &quot;sinnvollere&quot; umwandeln, lese mich aber gerde selbst erst ein. Scheint aber zu klappen <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201022</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Thu, 12 Apr 2012 07:32:20 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 07:42:21 GMT]]></title><description><![CDATA[<p>MatheStein schrieb:</p>
<blockquote>
<p>Habe hier auch gerade etwas gefunden:</p>
<pre><code class="language-cpp">abi::__cxa_demangle(typeid(int).name(), 0, 0, &amp;status)
</code></pre>
<p>Offensichtlich kann man hier mit die internen Namen des GCC in &quot;sinnvollere&quot; umwandeln, lese mich aber gerde selbst erst ein. Scheint aber zu klappen <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="🙂"
    /></p>
</blockquote>
<p>Das ist allerdings wiederum GCC Abhängig.<br />
Wofür brauchst du das überhaupt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201025</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 12 Apr 2012 07:42:21 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 07:44:29 GMT]]></title><description><![CDATA[<p>Ist eine etwas fiesere Geschichte..</p>
<p>Baue eine Art Interpreter der irgendwelche Codefragmente als String verarbeitet und an einer Stelle brauche ich von einem Templateparameter den Datentyp als String um vernünftigen Code generieren zu können.. Ungefähr so etwas in der Art</p>
<p>Gruß <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201026</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Thu, 12 Apr 2012 07:44:29 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 07:45:25 GMT]]></title><description><![CDATA[<p>Eh.. ja, das hört sich nach Quatsch an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201027</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 12 Apr 2012 07:45:25 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 09:24:42 GMT]]></title><description><![CDATA[<p>MatheStein schrieb:</p>
<blockquote>
<p>Habe hier auch gerade etwas gefunden:</p>
<pre><code class="language-cpp">abi::__cxa_demangle(typeid(int).name(), 0, 0, &amp;status)
</code></pre>
<p>Offensichtlich kann man hier mit die internen Namen des GCC in &quot;sinnvollere&quot; umwandeln, lese mich aber gerde selbst erst ein. Scheint aber zu klappen <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="🙂"
    /></p>
</blockquote>
<p>Nicht vergessen: Der Pointer, der da zurückgegeben wird, muss selber wieder freigegeben werden!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201069</guid><dc:creator><![CDATA[pyhax]]></dc:creator><pubDate>Thu, 12 Apr 2012 09:24:42 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 09:36:06 GMT]]></title><description><![CDATA[<p>Danke <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="🙂"
    /></p>
<p>Ist der Rückgabewert ein C-String, also macht man das ca so:</p>
<pre><code class="language-cpp">char* s = abi::__cxa_demangle(typeid(int).name(), 0, 0, &amp;status);

// ...

free(s);
</code></pre>
<p>Oder macht man das mit &quot;delete&quot; ?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201077</guid><dc:creator><![CDATA[MatheStein]]></dc:creator><pubDate>Thu, 12 Apr 2012 09:36:06 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 10:13:11 GMT]]></title><description><![CDATA[<p>MatheStein schrieb:</p>
<blockquote>
<p>Oder macht man das mit &quot;delete&quot; ?</p>
</blockquote>
<p>Nein - mit free (siehe <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html" rel="nofollow">http://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html</a>).</p>
<p>Besser als es selber später mit free freizugeben, ist die Verwendung von RAII im Allgemeinen und Smart-Pointer im Besonderen</p>
<pre><code class="language-cpp">std::shared_ptr&lt; char &gt; s( abi::__cxa_demangle(typeid(int).name(), 0, 0, &amp;status), &amp;::free ); // erfordert #include &lt;memory&gt; und C++11
</code></pre>
<p>danach brauchst Du Dich um das Freigeben nicht mehr zu kümmern.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201087</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 12 Apr 2012 10:13:11 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 10:18:18 GMT]]></title><description><![CDATA[<p>Hmm, bevor ich für soetwas den Overhead eines shared_ptr in Kauf nehmen würde, würde ich eher an free denken. <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>
<pre><code class="language-cpp">char* demangled = abi::__cxa_demangle(typeid(int).name(), 0, 0, &amp;status);
std::string s(demangled);
free(demangled);
</code></pre>
<p>Ja ... der Konstruktor von s kann bad_alloc werfen, sowas ist aber vermutlich in der Geschichte noch nie passiert, wenn es um Speicher für max. 15 Bytes geht. <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/2201089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201089</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Thu, 12 Apr 2012 10:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 10:42:40 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<p>Hmm, bevor ich für soetwas den Overhead eines shared_ptr in Kauf nehmen würde, würde ich eher an free denken. <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>Ne, das ist nicht mal exception safe. Und der &quot;overhead&quot; von shared_ptr dürfte hier auch kaum spürbar sein, aber unique_ptr wäre natürlich trotzdem angebrachter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201093</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 12 Apr 2012 10:42:40 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 10:54:10 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Ethon schrieb:</p>
<blockquote>
<p>Hmm, bevor ich für soetwas den Overhead eines shared_ptr in Kauf nehmen würde, würde ich eher an free denken. <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>Ne, das ist nicht mal exception safe. Und der &quot;overhead&quot; von shared_ptr dürfte hier auch kaum spürbar sein, aber unique_ptr wäre natürlich trotzdem angebrachter.</p>
</blockquote>
<p>ich wusste zunächst nicht, dass std::unique_ptr das kann. Man kann tatsächlich einen Deleter als zweiten Parameter angeben, aber so einfach wie beim shared_ptr geht es nicht (compiliert nicht mit VC10)!</p>
<p>Wer weiß, was man hier tun muss, um std::unique_ptr zu benutzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2201101</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201101</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Thu, 12 Apr 2012 10:54:10 GMT</pubDate></item><item><title><![CDATA[Reply to Templateparameter zu String on Thu, 12 Apr 2012 10:58:25 GMT]]></title><description><![CDATA[<p>unique_ptr will den deleter mit im Typen haben:</p>
<pre><code class="language-cpp">std::unique_ptr&lt;char, decltype(&amp;std::free)&gt; p(.., &amp;std::free);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2201102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2201102</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 12 Apr 2012 10:58:25 GMT</pubDate></item></channel></rss>