<?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[generelle Templateparameter, Unterscheidung unsigned typename aufheben]]></title><description><![CDATA[<p>Folgendes funktioniert ganz gut:</p>
<pre><code class="language-cpp">template&lt;unsigned... args&gt;
struct seq
{
    static const unsigned length = sizeof...(args);
};

int main()
{
    seq&lt;1, 2, 3&gt; s;

    std::cerr &lt;&lt; &quot;s::length: &quot; &lt;&lt; s.length &lt;&lt; '\n';

    return 0;
}
</code></pre>
<p>Leider verbietet mir die Templatedefinition <code>seq</code> wie folgt zu instanziieren, obwohl der Templateparameter aktuell keine Rolle spielt:</p>
<pre><code class="language-cpp">seq&lt;int, int, int&gt; s;
</code></pre>
<p>Klar kann ich ein Template <code>typed_seq</code> erstellen, jedoch finde ich diese Trennung eher kuenstlich und ungeschickt. Wie kann ich obiges Sequenztemplate definieren, das sowohl unsigned's als auch Typen als Templateparameter akzeptiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/320694/generelle-templateparameter-unterscheidung-unsigned-typename-aufheben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 22 Jul 2026 15:31:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/320694.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Oct 2013 12:28:22 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to generelle Templateparameter, Unterscheidung unsigned typename aufheben on Tue, 08 Oct 2013 12:28:22 GMT]]></title><description><![CDATA[<p>Folgendes funktioniert ganz gut:</p>
<pre><code class="language-cpp">template&lt;unsigned... args&gt;
struct seq
{
    static const unsigned length = sizeof...(args);
};

int main()
{
    seq&lt;1, 2, 3&gt; s;

    std::cerr &lt;&lt; &quot;s::length: &quot; &lt;&lt; s.length &lt;&lt; '\n';

    return 0;
}
</code></pre>
<p>Leider verbietet mir die Templatedefinition <code>seq</code> wie folgt zu instanziieren, obwohl der Templateparameter aktuell keine Rolle spielt:</p>
<pre><code class="language-cpp">seq&lt;int, int, int&gt; s;
</code></pre>
<p>Klar kann ich ein Template <code>typed_seq</code> erstellen, jedoch finde ich diese Trennung eher kuenstlich und ungeschickt. Wie kann ich obiges Sequenztemplate definieren, das sowohl unsigned's als auch Typen als Templateparameter akzeptiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2358853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2358853</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 08 Oct 2013 12:28:22 GMT</pubDate></item><item><title><![CDATA[Reply to generelle Templateparameter, Unterscheidung unsigned typename aufheben on Tue, 08 Oct 2013 12:33:00 GMT]]></title><description><![CDATA[<p>Gar nicht. Geht nicht. Ich finde die Beschränkung auch völlig willkürlich und nervig.</p>
<p>Mein Workaround ist, alles als Typ zu übergeben:</p>
<pre><code class="language-cpp">template &lt;int I&gt; using int_ = std::integral_constant&lt;int, I&gt;;

seq&lt;int_&lt;1&gt;, int_&lt;2&gt;, int_&lt;3&gt; &gt; s;
</code></pre>
<p>Was besseres ist mir nicht bekannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2358857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2358857</guid><dc:creator><![CDATA[mission impossible]]></dc:creator><pubDate>Tue, 08 Oct 2013 12:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to generelle Templateparameter, Unterscheidung unsigned typename aufheben on Tue, 08 Oct 2013 12:44:30 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>Leider verbietet mir die Templatedefinition <code>seq</code> wie folgt zu instanziieren, obwohl der Templateparameter aktuell keine Rolle spielt:</p>
<pre><code class="language-cpp">seq&lt;int, int, int&gt; s;
</code></pre>
</blockquote>
<p>Ich kann nicht ganz folgen. seq nimmt doch Werte, keine Typen.</p>
<p>Edit: nvm. Ich glaube, ich verstehe das Problem jetzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2358860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2358860</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 08 Oct 2013 12:44:30 GMT</pubDate></item><item><title><![CDATA[Reply to generelle Templateparameter, Unterscheidung unsigned typename aufheben on Tue, 08 Oct 2013 12:46:38 GMT]]></title><description><![CDATA[<p>Der gaengige Workaround ist, alle Werte in Typen zu verpacken und dann auf Typlisten zu arbeiten. Zum erstellen einer Sequenz kann man sich natuerlich ein kleines Helferlein schreiben.<br />
Irgendwo gab es mal ein Proposal, der anstatt 'typename' bzw dem Typen einen Punkt '.' erlaubt, mit dem man Templates dann sowohl mit Typen, als auch mit Werten instanzieren konnte. Leider finde ich ihn gerade nicht.</p>
<p>Edit: Gefunden: <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3416.html" rel="nofollow">http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3416.html</a><br />
Siehe &quot;Bonus feature: weakly specifying parameters&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2358861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2358861</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Tue, 08 Oct 2013 12:46:38 GMT</pubDate></item></channel></rss>