<?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[Templates]]></title><description><![CDATA[<p>Guten Morgen</p>
<p>Ich hab ein kleines Problem mit den Templates. Anscheinend gehen bei mir die aktuellen Generationen noch nicht.</p>
<pre><code>template &lt;typename T&gt;
using vlist_t = std::vector&lt;T&gt;;

template &lt;typename T&gt;
using vsize_t = typename vlist_t&lt;T&gt;::size_type;

template &lt;typename T&gt;
using vvalue_t = typename vlist&lt;T&gt;::value_type;

template &lt;typename T = double&gt;
vlist_t&lt;T&gt; ffunction(const vlist_t&lt;T&gt; &amp;x, const vsize_t&lt;T&gt; r = 0){
	vlist_t&lt;T&gt;ret;
	/* Code .... */
	return ret;
}
</code></pre>
<p>Ich hab jetzt versuch das so zu lösen. Lässt sich aber nicht kompilieren.</p>
<pre><code>template &lt;typename T&gt;
struct vlist_t{
	typedef std::vector&lt;T&gt; tlist;
};
template &lt;typename T&gt;
struct vsize_t{
	typedef typename vlist_t&lt;T&gt;::tlist::size_type tvsize;
};
template &lt;typename T&gt;
struct vvalue_t{
	typedef typename vlist_t&lt;T&gt;::tlist::value_type tvvalue;
};

template &lt;typename T = double&gt;
vlist_t&lt;T&gt;::tlist ffunction(const vlist_t&lt;T&gt;::tlist &amp;x, const vsize_t&lt;T&gt;::tvsize r = 0){
	vlist_t&lt;T&gt;::tlist ret;
	/* Code .... */
	return ret;
}
</code></pre>
<p>Fehlermeldung:</p>
<pre><code>warning C4346: 'vlist_t&lt;T&gt;::tlist' : dependent name is not a type
</code></pre>
<p>Ich hab das auch schon mit umstellen und umschreiben ausprobiert. Kann mir hierzu jemand einen Tip geben wie ich das lösen soll. Danke.</p>
<p>wachs</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/339677/templates</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Apr 2026 23:04:43 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339677.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Sep 2016 08:38:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templates on Mon, 19 Sep 2016 08:38:52 GMT]]></title><description><![CDATA[<p>Guten Morgen</p>
<p>Ich hab ein kleines Problem mit den Templates. Anscheinend gehen bei mir die aktuellen Generationen noch nicht.</p>
<pre><code>template &lt;typename T&gt;
using vlist_t = std::vector&lt;T&gt;;

template &lt;typename T&gt;
using vsize_t = typename vlist_t&lt;T&gt;::size_type;

template &lt;typename T&gt;
using vvalue_t = typename vlist&lt;T&gt;::value_type;

template &lt;typename T = double&gt;
vlist_t&lt;T&gt; ffunction(const vlist_t&lt;T&gt; &amp;x, const vsize_t&lt;T&gt; r = 0){
	vlist_t&lt;T&gt;ret;
	/* Code .... */
	return ret;
}
</code></pre>
<p>Ich hab jetzt versuch das so zu lösen. Lässt sich aber nicht kompilieren.</p>
<pre><code>template &lt;typename T&gt;
struct vlist_t{
	typedef std::vector&lt;T&gt; tlist;
};
template &lt;typename T&gt;
struct vsize_t{
	typedef typename vlist_t&lt;T&gt;::tlist::size_type tvsize;
};
template &lt;typename T&gt;
struct vvalue_t{
	typedef typename vlist_t&lt;T&gt;::tlist::value_type tvvalue;
};

template &lt;typename T = double&gt;
vlist_t&lt;T&gt;::tlist ffunction(const vlist_t&lt;T&gt;::tlist &amp;x, const vsize_t&lt;T&gt;::tvsize r = 0){
	vlist_t&lt;T&gt;::tlist ret;
	/* Code .... */
	return ret;
}
</code></pre>
<p>Fehlermeldung:</p>
<pre><code>warning C4346: 'vlist_t&lt;T&gt;::tlist' : dependent name is not a type
</code></pre>
<p>Ich hab das auch schon mit umstellen und umschreiben ausprobiert. Kann mir hierzu jemand einen Tip geben wie ich das lösen soll. Danke.</p>
<p>wachs</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2509065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2509065</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 19 Sep 2016 08:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 19 Sep 2016 08:41:08 GMT]]></title><description><![CDATA[<p>Einen aktuellen Compiler installieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2509066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2509066</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 19 Sep 2016 08:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 19 Sep 2016 09:36:55 GMT]]></title><description><![CDATA[<p>Danke manni, möchte ich aber nicht.</p>
<p>Ich bin mir aber sicher, dass man das lösen kann, mit der richtigen Umstellung. Ein paar Tips dazu wäre für mich sehr hilfreich.</p>
<p>Edit:<br />
Ich hätte hier eine Möglichkeit, aber so müsste ich auf die Template-Eigenschaften der Funktion ffunction verzichten.<br />
Gibt es dazu eventuell eine andere Möglichkeit? Boost vielleicht?</p>
<pre><code>template &lt;typename T&gt;
struct vlist_t{
	typedef std::vector&lt;T&gt; tlist;
};
template &lt;typename T&gt;
struct vsize_t{
	typedef typename vlist_t&lt;T&gt;::tlist::size_type tvsize;
};
template &lt;typename T&gt;
struct vvalue_t{
	typedef typename vlist_t&lt;T&gt;::tlist::value_type tvvalue;
};

typedef vlist_t&lt;double&gt;::tlist _tlist;
typedef vsize_t&lt;double&gt;::tvsize _tvsize;
typedef vvalue_t&lt;double&gt;::tvvalue _tvvalue;

//template &lt;typename T  = double&gt;
_tlist ffunction(const _tlist &amp;x, const _tvsize r = 0){
	_tlist ret;
	/* Code .... */
	return ret;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2509070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2509070</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 19 Sep 2016 09:36:55 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 19 Sep 2016 10:09:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>die Compiler-Warnung sagt dir schon, was falsch läuft. Die Bezeichner sind von einem Template-Argument abhängig (hier von <code>T</code> ), daher kann der Compiler nicht wissen, ob es sich um ein Value, ein Typ oder ein Template handelt. Daher muss man so etwas explizit angeben (mit dem Schlüsselwort <code>typename</code> für Typen oder <code>template</code> für Templates). Korrigiert sähe dein Snippet so aus:</p>
<pre><code>template &lt;typename T = double&gt;
typename vlist_t&lt;T&gt;::tlist ffunction(const typename vlist_t&lt;T&gt;::tlist &amp;x, const typename vsize_t&lt;T&gt;::tvsize r = 0){
	typename vlist_t&lt;T&gt;::tlist ret;
	/* Code .... */
	return ret;
}
</code></pre>
<p>Für mehr Infos zu dieser Thematik: <a href="http://en.cppreference.com/w/cpp/language/dependent_name" rel="nofollow">http://en.cppreference.com/w/cpp/language/dependent_name</a> (insb. zweitletzter Absatz)</p>
<p>Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2509078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2509078</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Mon, 19 Sep 2016 10:09:06 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 19 Sep 2016 12:04:27 GMT]]></title><description><![CDATA[<p>Danke Fytch</p>
<p>Das hat jetzt ein ganzes stück weitergeholfen.</p>
<p>Jetzt kriege ich nur noch diese Meldung, die ich nicht ganz verstehe, weil ich ja mit den Definitionen in der Parameterliste der Funktion ffunction Klassenvorlage definiere.</p>
<pre><code>error C4519: default template arguments are only allowed on a class template
</code></pre>
<p>Muss ich die ffunction in eine Klasse einbauen?</p>
<p>Edit:<br />
Fehler gefunden</p>
<pre><code>template &lt;typename T /*= double*/&gt;
typename vlist_t&lt;T&gt;::tlist ffunction(const typename vlist_t&lt;T&gt;::tlist &amp;x, const typename vsize_t&lt;T&gt;::tvsize r = 0)
</code></pre>
<p>Definitionen von T erlaubt mein Kompiler anscheinend nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2509089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2509089</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 19 Sep 2016 12:04:27 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 19 Sep 2016 13:19:37 GMT]]></title><description><![CDATA[<p>Das ist schon normal und das hat dir dein Compiler doch auch recht klar gesagt: Funktionstemplates durften keine Defaulttemplateparameter haben. Ich schreibe &quot;durften&quot;, denn das wurde für C++11, also vor über 5 Jahren, geändert. Vielleicht mal mit der Zeit gehen, mittlerweile gibt's schon C++14 und C++17 steht vor der Tür...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2509094</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2509094</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 19 Sep 2016 13:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to Templates on Mon, 19 Sep 2016 13:30:02 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a></p>
<p>Das hätte ich gemacht wenn es mir hier und jetzt möglich wäre <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/2509097</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2509097</guid><dc:creator><![CDATA[wachs]]></dc:creator><pubDate>Mon, 19 Sep 2016 13:30:02 GMT</pubDate></item></channel></rss>