<?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[TMP Algorithmus Adapter]]></title><description><![CDATA[<p>(Auf die Gefahr hin, dass ich einfach nur zu müde bin um selbst drauf zu kommen)</p>
<p>Zugrunde liegt aktuell folgend TM-Funktion:</p>
<pre><code>template &lt;typename String, template &lt;typename, template &lt;typename...&gt; class ...&gt; class TupleAlgorithm, template &lt;typename...&gt; class ... AdditionalParameters&gt;
struct adapt {
    using type = apply_t &lt;TupleAlgorithm &lt;typename String::type, AdditionalParameters...&gt;, mplex::translate&gt;;
};
</code></pre>
<p>Diese führt den TupleAlgorithm aus auf String und den Parametern und erzeugt daraus einen neuen String.</p>
<p>Das funktioniert aktuell offensichtlich nur, wenn alle Parameter von TupleAlgorithm <em>template&lt;&gt;class</em> Parameter sind.<br />
Jedoch könnte es sein, dass es sich um eine Mischung von <em>Typen</em> und <em>Templates</em> handelt, die weitergegeben werden müssen an den Algorithmus.</p>
<p>Mir fiel jedoch auf Anhieb keine Möglichkeit ein das einfach und universell umzusetzen. (Ohne <em>Typparameter</em> von Hand in künstliche <em>template&lt;&gt;class</em> Parameter zu wrappen immer und immer wieder.)</p>
<p>Anwendungsbeispiel:</p>
<pre><code>// namespace string_algorithm
template &lt;typename String, template &lt;typename&gt; class Predicate = is_space&gt;
struct trim_left : adapt &lt;String, mplex::trim_left_t, Predicate&gt;
{ };
</code></pre>
<pre><code>// namespace mplex 
template &lt;typename Tuple, template &lt;typename&gt; class Predicate, bool Abort = false&gt;
struct trim_left
{ };
// implementation left out
</code></pre>
<p>Vielleicht fällt euch was elegantes ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/333286/tmp-algorithmus-adapter</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 05:20:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/333286.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Jun 2015 02:40:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TMP Algorithmus Adapter on Wed, 24 Jun 2015 02:40:30 GMT]]></title><description><![CDATA[<p>(Auf die Gefahr hin, dass ich einfach nur zu müde bin um selbst drauf zu kommen)</p>
<p>Zugrunde liegt aktuell folgend TM-Funktion:</p>
<pre><code>template &lt;typename String, template &lt;typename, template &lt;typename...&gt; class ...&gt; class TupleAlgorithm, template &lt;typename...&gt; class ... AdditionalParameters&gt;
struct adapt {
    using type = apply_t &lt;TupleAlgorithm &lt;typename String::type, AdditionalParameters...&gt;, mplex::translate&gt;;
};
</code></pre>
<p>Diese führt den TupleAlgorithm aus auf String und den Parametern und erzeugt daraus einen neuen String.</p>
<p>Das funktioniert aktuell offensichtlich nur, wenn alle Parameter von TupleAlgorithm <em>template&lt;&gt;class</em> Parameter sind.<br />
Jedoch könnte es sein, dass es sich um eine Mischung von <em>Typen</em> und <em>Templates</em> handelt, die weitergegeben werden müssen an den Algorithmus.</p>
<p>Mir fiel jedoch auf Anhieb keine Möglichkeit ein das einfach und universell umzusetzen. (Ohne <em>Typparameter</em> von Hand in künstliche <em>template&lt;&gt;class</em> Parameter zu wrappen immer und immer wieder.)</p>
<p>Anwendungsbeispiel:</p>
<pre><code>// namespace string_algorithm
template &lt;typename String, template &lt;typename&gt; class Predicate = is_space&gt;
struct trim_left : adapt &lt;String, mplex::trim_left_t, Predicate&gt;
{ };
</code></pre>
<pre><code>// namespace mplex 
template &lt;typename Tuple, template &lt;typename&gt; class Predicate, bool Abort = false&gt;
struct trim_left
{ };
// implementation left out
</code></pre>
<p>Vielleicht fällt euch was elegantes ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457601</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Wed, 24 Jun 2015 02:40:30 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Algorithmus Adapter on Thu, 25 Jun 2015 00:06:52 GMT]]></title><description><![CDATA[<p>5cript schrieb:</p>
<blockquote>
<p>(Ohne <em>Typparameter</em> von Hand in künstliche <em>template&lt;&gt;class</em> Parameter zu wrappen immer und immer wieder.)</p>
</blockquote>
<p>Der umgekehrte Weg ist zweckmäßig und wird ja u.a. auch in Boosts MPL verwendet: Templates werden in Typen gewrapped mit einheitlichenm Interface (Membertemplate apply).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457691</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 25 Jun 2015 00:06:52 GMT</pubDate></item><item><title><![CDATA[Reply to TMP Algorithmus Adapter on Sat, 27 Jun 2015 15:32:59 GMT]]></title><description><![CDATA[<p>So umgesetzt hat das noch viel mehr Vorteile.</p>
<p>Ich habe nun alles diesgehend umgebaut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2457954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2457954</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Sat, 27 Jun 2015 15:32:59 GMT</pubDate></item></channel></rss>