<?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[Char* oder std:String als Parameter einer Template Funktion ?]]></title><description><![CDATA[<p>Ich habe folgende Template Funktion und bin am überlegen ob ich beim ersten Parameter auch einen Char* zu verwenden darf. Wäre das nicht aus Performance gründen sinnvoller? Oder habe ich da dann nacher ein Speicherleck?</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void assertNotOutsideRange(const std::string name, const T value, const T from, const T to)
{
    if (value &gt; to || value &lt; from)
    {
        std::ostringstream buf;
        buf &lt;&lt; name &lt;&lt; &quot;: expected value between &quot; &lt;&lt; from &lt;&lt; &quot; and &quot; &lt;&lt; to &lt;&lt; &quot;, but get &quot; &lt;&lt; value;
        throw std::range_error( buf.str() );
    }
}
</code></pre>
<p>So verwende ich die Funktion:</p>
<pre><code class="language-cpp">assertNotOutsideRange(&quot;x&quot;,x,0,width-1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/140225/char-oder-std-string-als-parameter-einer-template-funktion</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 02:30:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/140225.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Mar 2006 11:29:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Char* oder std:String als Parameter einer Template Funktion ? on Mon, 13 Mar 2006 11:29:40 GMT]]></title><description><![CDATA[<p>Ich habe folgende Template Funktion und bin am überlegen ob ich beim ersten Parameter auch einen Char* zu verwenden darf. Wäre das nicht aus Performance gründen sinnvoller? Oder habe ich da dann nacher ein Speicherleck?</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void assertNotOutsideRange(const std::string name, const T value, const T from, const T to)
{
    if (value &gt; to || value &lt; from)
    {
        std::ostringstream buf;
        buf &lt;&lt; name &lt;&lt; &quot;: expected value between &quot; &lt;&lt; from &lt;&lt; &quot; and &quot; &lt;&lt; to &lt;&lt; &quot;, but get &quot; &lt;&lt; value;
        throw std::range_error( buf.str() );
    }
}
</code></pre>
<p>So verwende ich die Funktion:</p>
<pre><code class="language-cpp">assertNotOutsideRange(&quot;x&quot;,x,0,width-1);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1015168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015168</guid><dc:creator><![CDATA[if*Flo*]]></dc:creator><pubDate>Mon, 13 Mar 2006 11:29:40 GMT</pubDate></item><item><title><![CDATA[Reply to Char* oder std:String als Parameter einer Template Funktion ? on Mon, 13 Mar 2006 11:36:34 GMT]]></title><description><![CDATA[<p>A) Übergebe alle Parameter (auch die unbekannten Typs - könnte ja was anderes als POD sein) als const Referenz, dann hast Du keine Performanceprobleme</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--smiling_face_with_sunglasses"
      title="B)"
      alt="😎"
    /> Wenn Du nicht per Referenz übergibst, ist das const fürchterlich überflüssig <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">template &lt;typename T&gt;
void assertNotOutsideRange(const std::string&amp; name, const T&amp; value, const T&amp; from, const T&amp; to)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1015177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015177</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 13 Mar 2006 11:36:34 GMT</pubDate></item><item><title><![CDATA[Reply to Char* oder std:String als Parameter einer Template Funktion ? on Mon, 13 Mar 2006 11:39:09 GMT]]></title><description><![CDATA[<p>und auch wenn du ein char* übergibst, dürftest du keine Speicherlücke haben, da String-Literale automatisch aufgeräumt werden (außer natürlich, du erzeugst den Paramter für die Funktion per new).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015181</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 13 Mar 2006 11:39:09 GMT</pubDate></item><item><title><![CDATA[Reply to Char* oder std:String als Parameter einer Template Funktion ? on Mon, 13 Mar 2006 11:49:21 GMT]]></title><description><![CDATA[<p>Danke an euch zwei <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>Spricht etwas dagen die Methoden zu überladen? So dass ich einmal Char* als ersten Parameter habe und das andere mal std:String. Oder macht man sowas nicht?</p>
<p>also</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
void assertNotOutsideRange(const std::string&amp; name, const T&amp; value, const T&amp; from, const T&amp; to)
{
	if (value &gt; to || value &lt; from)
	{
		std::ostringstream buf;
		buf &lt;&lt; name &lt;&lt; &quot;: expected value between &quot; &lt;&lt; from &lt;&lt; &quot; and &quot; &lt;&lt; to &lt;&lt; &quot;, but get &quot; &lt;&lt; value;
		throw std::range_error( buf.str() );
	}
}
template &lt;typename T&gt;
void assertNotOutsideRange(const char* name, const T&amp; value, const T&amp; from, const T&amp; to)
{
	if (value &gt; to || value &lt; from)
	{
		std::ostringstream buf;
		buf &lt;&lt; name &lt;&lt; &quot;: expected value between &quot; &lt;&lt; from &lt;&lt; &quot; and &quot; &lt;&lt; to &lt;&lt; &quot;, but get &quot; &lt;&lt; value;
		throw std::range_error( buf.str() );
	}
}
</code></pre>
<p>MfG<br />
IFlo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015184</guid><dc:creator><![CDATA[if*Flo*]]></dc:creator><pubDate>Mon, 13 Mar 2006 11:49:21 GMT</pubDate></item><item><title><![CDATA[Reply to Char* oder std:String als Parameter einer Template Funktion ? on Mon, 13 Mar 2006 11:51:26 GMT]]></title><description><![CDATA[<p>theoretisch ist es möglich, aber praktisch macht es weniger Sinn - wenn du wirklich sowohl String-Literale als auch std::string's an die Funktion übergeben willst, reicht eine Version für &quot;const std::string&amp;&quot; (die kann auch char*'s entgegennehmen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1015189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1015189</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 13 Mar 2006 11:51:26 GMT</pubDate></item></channel></rss>