<?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[Geschachtelte Parameterpack-Expansion]]></title><description><![CDATA[<p>Hallo da,<br />
ich habe folgenden Code geschrieben, in der Hoffnung, dass es funktionieren würde:</p>
<pre><code class="language-cpp">template&lt; typename SignatureList, typename PolicyList &gt;
	struct make_converter_list {
		static_assert(meta::is_typelist&lt;SignatureList&gt;::value || meta::size&lt;SignatureList&gt;::value, &quot;Given SignatureList is no type list or does not have at least a return type&quot;);
		static_assert(meta::is_typelist&lt;PolicyList&gt;::value || meta::size&lt;PolicyList&gt;::value, &quot;Given SignatureList is no type list&quot;);
	};

	template&lt; typename Signature0, typename... SignatureTypes, typename Policy0, typename... PolicyTypes &gt;
	struct make_converter_list&lt; meta::type_list&lt; Signature0, SignatureTypes... &gt;, meta::type_list&lt; Policy0, PolicyTypes... &gt; &gt;
	{
		static_assert(sizeof...(SignatureTypes) == sizeof...(PolicyTypes), &quot;Mismatching Signature/Policy combination&quot;);
		typedef meta::type_list&lt; typename Policy0::apply&lt;Signature0, tag1&gt;::type, typename PolicyTypes::apply&lt; SignatureTypes, tag0 &gt;::type... &gt; type;
	};
</code></pre>
<p>Also für jedes Paar aus der Signaturliste und der Policyliste soll PolicyElement::apply&lt;SignaturElement,tag&gt;::type ausgewertet werden und aus dem ganzen wieder eine Typliste zusammengesetzt werden.<br />
Nun expandiere ich aber beide Parameterpacks &quot;gleichzeitig&quot; und der Compiler meckert, dass er ein '&gt;' erwarten würde. Also sieht es für mich so aus, als könnte die &quot;gleichzeitige&quot; Expansion der zwei Parameterpacks irgendwie fehlerhaft sein. Habe ich da gerade einen Syntaxfehler eingebaut, den ich nicht sehe, oder darf man das gar nicht machen?</p>
<p>Danke für eure Hilfe schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319850/geschachtelte-parameterpack-expansion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 19:42:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319850.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 05 Sep 2013 13:11:55 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Geschachtelte Parameterpack-Expansion on Thu, 05 Sep 2013 13:11:55 GMT]]></title><description><![CDATA[<p>Hallo da,<br />
ich habe folgenden Code geschrieben, in der Hoffnung, dass es funktionieren würde:</p>
<pre><code class="language-cpp">template&lt; typename SignatureList, typename PolicyList &gt;
	struct make_converter_list {
		static_assert(meta::is_typelist&lt;SignatureList&gt;::value || meta::size&lt;SignatureList&gt;::value, &quot;Given SignatureList is no type list or does not have at least a return type&quot;);
		static_assert(meta::is_typelist&lt;PolicyList&gt;::value || meta::size&lt;PolicyList&gt;::value, &quot;Given SignatureList is no type list&quot;);
	};

	template&lt; typename Signature0, typename... SignatureTypes, typename Policy0, typename... PolicyTypes &gt;
	struct make_converter_list&lt; meta::type_list&lt; Signature0, SignatureTypes... &gt;, meta::type_list&lt; Policy0, PolicyTypes... &gt; &gt;
	{
		static_assert(sizeof...(SignatureTypes) == sizeof...(PolicyTypes), &quot;Mismatching Signature/Policy combination&quot;);
		typedef meta::type_list&lt; typename Policy0::apply&lt;Signature0, tag1&gt;::type, typename PolicyTypes::apply&lt; SignatureTypes, tag0 &gt;::type... &gt; type;
	};
</code></pre>
<p>Also für jedes Paar aus der Signaturliste und der Policyliste soll PolicyElement::apply&lt;SignaturElement,tag&gt;::type ausgewertet werden und aus dem ganzen wieder eine Typliste zusammengesetzt werden.<br />
Nun expandiere ich aber beide Parameterpacks &quot;gleichzeitig&quot; und der Compiler meckert, dass er ein '&gt;' erwarten würde. Also sieht es für mich so aus, als könnte die &quot;gleichzeitige&quot; Expansion der zwei Parameterpacks irgendwie fehlerhaft sein. Habe ich da gerade einen Syntaxfehler eingebaut, den ich nicht sehe, oder darf man das gar nicht machen?</p>
<p>Danke für eure Hilfe schonmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350502</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350502</guid><dc:creator><![CDATA[ParameterPack]]></dc:creator><pubDate>Thu, 05 Sep 2013 13:11:55 GMT</pubDate></item><item><title><![CDATA[Reply to Geschachtelte Parameterpack-Expansion on Thu, 05 Sep 2013 13:15:32 GMT]]></title><description><![CDATA[<p>Ohne das genauer angeschaut zu haben, fehlen auf jedenfalls ein paar zusätzliche template-Schlüsselwörter</p>
<pre><code class="language-cpp">typedef meta::type_list&lt; typename Policy0::template apply&lt;Signature0, tag1&gt;::type, typename PolicyTypes::template apply&lt; SignatureTypes, tag0 &gt;::type... &gt; type;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2350505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350505</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 05 Sep 2013 13:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to Geschachtelte Parameterpack-Expansion on Thu, 05 Sep 2013 13:20:52 GMT]]></title><description><![CDATA[<p>Autsch, vielen Dank Dir! Das war es auch schon -.-</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2350507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2350507</guid><dc:creator><![CDATA[ParameterPack]]></dc:creator><pubDate>Thu, 05 Sep 2013 13:20:52 GMT</pubDate></item></channel></rss>