<?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[std::tuple und uniform initialization]]></title><description><![CDATA[<p>Ich kann kein std::tuples mit uniform initialization initialisieren, weil der Konstruktor explicit ist, z.B. geht das nicht:</p>
<pre><code>std::vector&lt;std::tuple&lt;std::string,int,int&gt;&gt; xyz{{&quot;a&quot;,0,1},{&quot;b&quot;,2,3},{&quot;c&quot;,2,3}};
</code></pre>
<p>Gibt es einen guten Grund dafür und wenn nicht, gibt es bessere Implementationen (boost vielleicht)?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322950/std-tuple-und-uniform-initialization</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 12:38:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322950.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 13 Jan 2014 08:22:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 08:22:53 GMT]]></title><description><![CDATA[<p>Ich kann kein std::tuples mit uniform initialization initialisieren, weil der Konstruktor explicit ist, z.B. geht das nicht:</p>
<pre><code>std::vector&lt;std::tuple&lt;std::string,int,int&gt;&gt; xyz{{&quot;a&quot;,0,1},{&quot;b&quot;,2,3},{&quot;c&quot;,2,3}};
</code></pre>
<p>Gibt es einen guten Grund dafür und wenn nicht, gibt es bessere Implementationen (boost vielleicht)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377045</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377045</guid><dc:creator><![CDATA[qwas]]></dc:creator><pubDate>Mon, 13 Jan 2014 08:22:53 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 08:30:52 GMT]]></title><description><![CDATA[<p>Zumindest meine zweite Frage kann ich selbst beantworten, mit boost::tuple geht es.<br />
Allerdings wäre mir eine tuple-Implementation, die keine gigantischen Abhängigkeiten wie boost benötigt viel lieber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377046</guid><dc:creator><![CDATA[qwas]]></dc:creator><pubDate>Mon, 13 Jan 2014 08:30:52 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 08:46:57 GMT]]></title><description><![CDATA[<blockquote>
<p>Gibt es einen guten Grund dafür</p>
</blockquote>
<p>Offensichtlich keinen technischen. Nein, es ist natuerlich moeglich. Nur ist die Initialisierung von Tuples auf diesem Wege nicht der Ideologie entsprechend.</p>
<p>Mein Vorschlag ist simpel: Du schreibst einen Tupel-Wrapper, der diese Form von Initialisierung anbietet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377048</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 13 Jan 2014 08:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 09:31:37 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Nur ist die Initialisierung von Tuples auf diesem Wege nicht der Ideologie entsprechend.</p>
</blockquote>
<p>Kommt mir aber merkwürdig vor, dass man ein eigentlich nützliches Feature einbaut, das dann aber wieder dadurch negiert, indem man auch alle möglichen neuen Typen einführt, welche absichtlich damit inkompatibel sind.</p>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Mein Vorschlag ist simpel: Du schreibst einen Tupel-Wrapper, der diese Form von Initialisierung anbietet. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
</blockquote>
<p>Super, danke. Das klang in meinem Kopf erst mal einige Größenordnungen komplizierter, aber im Prinzip hab ich das gewünschte schon mit drei Zeilen erreicht:</p>
<pre><code>template &lt;class... Args&gt; struct Tuple : std::tuple&lt;Args...&gt;
{
  Tuple(Args... args) : std::tuple&lt;Args...&gt;(std::move(args)...) {}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2377054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377054</guid><dc:creator><![CDATA[qwas]]></dc:creator><pubDate>Mon, 13 Jan 2014 09:31:37 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 10:45:04 GMT]]></title><description><![CDATA[<pre><code>Tuple(Args... args) : std::tuple&lt;Args...&gt;(std::move(args)...) {}
</code></pre>
<p>Wieso keine Const-Referenzen, sondern Kopie+Move?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377065</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 13 Jan 2014 10:45:04 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 12:10:14 GMT]]></title><description><![CDATA[<p>Das war so gedacht, dass ich wenn ich temporäre Objekte übergebe, keine Kopie gemacht werden muss, sondern nur zwei Moves ausgeführt werden. Aber ich habe gerade gemerkt, dass nur einmal gemovet wird, std::tuple macht dann doch noch eine Kopie. Das versteh ich allerdings nicht, was gibt es da zu kopieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377078</guid><dc:creator><![CDATA[qwas]]></dc:creator><pubDate>Mon, 13 Jan 2014 12:10:14 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 12:47:02 GMT]]></title><description><![CDATA[<p>Gibt es einen Grund gegen</p>
<pre><code class="language-cpp">std::vector&lt;std::tuple&lt;std::string,int,int&gt;&gt; xyz{make_tuple(&quot;a&quot;,0,1),make_tuple(&quot;b&quot;,2,3),make_tuple(&quot;c&quot;,2,3)};
</code></pre>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377085</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377085</guid><dc:creator><![CDATA[make_tuple]]></dc:creator><pubDate>Mon, 13 Jan 2014 12:47:02 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 13:03:11 GMT]]></title><description><![CDATA[<blockquote>
<p>Gibt es einen Grund gegen</p>
</blockquote>
<p>Ja, sieht scheiße aus!</p>
<blockquote>
<p>Das war so gedacht, dass ich wenn ich temporäre Objekte übergebe, keine Kopie gemacht werden muss, sondern nur zwei Moves ausgeführt werden.</p>
</blockquote>
<p>Ach, und wenn die Objekte eben nicht temporär' sind!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377088</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377088</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Mon, 13 Jan 2014 13:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to std::tuple und uniform initialization on Mon, 13 Jan 2014 13:26:26 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Ach, und wenn die Objekte eben nicht temporär' sind!?</p>
</blockquote>
<p>Dann ist egal, spätestens std::tuple hätte ja in diesem Fall kopieren müssen. So mache ich das und move dann zum std::tuple-Konstruktor. Hätte eigentlich so klappen müssen, wenn std::tuple nicht unnötigerweise nochmal kopieren würde...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377089</guid><dc:creator><![CDATA[qwas]]></dc:creator><pubDate>Mon, 13 Jan 2014 13:26:26 GMT</pubDate></item></channel></rss>