<?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[auto, deleted ctor]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>das folgende Snippet wird vom VS2013 Compiler kommentarlos gefressen, g++-4.8.1 meckert wegen dem deleted ctor.<br />
Wer hat Recht?<br />
Ich nehme an, dass der g++ hat Recht, da das default/delete im VS noch nicht so ganz standardkonform funktioniert (<a href="http://msdn.microsoft.com/en-us/library/hh567368.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/hh567368.aspx</a>).</p>
<pre><code>#include &lt;iostream&gt;

class foo_t
{
public:
   foo_t() {}

   foo_t( const foo_t&amp; ) = delete;

   void speak( ) { std::cout &lt;&lt; &quot;foo_t&quot; &lt;&lt; std::endl; }     
};

int main()
{
   auto foo = foo_t{};
   foo.speak();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/322424/auto-deleted-ctor</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 03:53:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322424.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 19 Dec 2013 13:31:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to auto, deleted ctor on Thu, 19 Dec 2013 13:31:25 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>das folgende Snippet wird vom VS2013 Compiler kommentarlos gefressen, g++-4.8.1 meckert wegen dem deleted ctor.<br />
Wer hat Recht?<br />
Ich nehme an, dass der g++ hat Recht, da das default/delete im VS noch nicht so ganz standardkonform funktioniert (<a href="http://msdn.microsoft.com/en-us/library/hh567368.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/hh567368.aspx</a>).</p>
<pre><code>#include &lt;iostream&gt;

class foo_t
{
public:
   foo_t() {}

   foo_t( const foo_t&amp; ) = delete;

   void speak( ) { std::cout &lt;&lt; &quot;foo_t&quot; &lt;&lt; std::endl; }     
};

int main()
{
   auto foo = foo_t{};
   foo.speak();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2372820</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372820</guid><dc:creator><![CDATA[void*]]></dc:creator><pubDate>Thu, 19 Dec 2013 13:31:25 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Thu, 19 Dec 2013 13:42:20 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>delete darfst du auf alle special member functions anwenden, also auch auf deinen Copy-Ctor.</p>
<pre><code>auto foo = foo_t{};
</code></pre>
<p>Hier soll der Copy-Ctor aber theoretisch verwendet werden. Da er aber deleted wurde, muss es ein Fehler geben. Praktisch wird der Copy-Ctor hier wohl nicht verwendet, wegen copy elision. Dennoch muss es ein Fehler geben, da der theoretische Ablauf compilierbar sein muss. Scheint so, als ob der MSVC den theoretischen Ablauf ignoriert (praktisch kein Copy-Ctor aufruf, also kein Fehler).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372822</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 19 Dec 2013 13:42:20 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Thu, 19 Dec 2013 13:51:48 GMT]]></title><description><![CDATA[<p>Was passiert, wenn du bei deinem Projekt die C++ Spracherweiterung deaktivierst? Die ist nämlich standardmäßig aktivert und erlaub so einigen Quatsch, wie z.B. Temporaries an non-const lvalue-reference zu binden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372826</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 19 Dec 2013 13:51:48 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Thu, 19 Dec 2013 17:11:12 GMT]]></title><description><![CDATA[<p>Hallo out,</p>
<p>auch mit /Za (Disable Language Extensions) kompiliert es.<br />
Aber es ist sehr interessant, dass die Erweiterungen default-mässig an sind. Das werde ich in Zukunft überall ausschalten!</p>
<p>out schrieb:</p>
<blockquote>
<p>Praktisch wird der Copy-Ctor hier wohl nicht verwendet, wegen copy elision.</p>
</blockquote>
<p>Unter <a href="http://herbsutter.com/2013/06/13/gotw-93-solution-auto-variables-part-2/?relatedposts_exclude=2119" rel="nofollow">http://herbsutter.com/2013/06/13/gotw-93-solution-auto-variables-part-2/?relatedposts_exclude=2119</a> steht:</p>
<p>Herb Sutter schrieb:</p>
<blockquote>
<p>By the way, if you’ve been wondering whether that “=” in auto x = expr; causes a temporary object plus a move or copy, wonder no longer: No, it constructs x directly. (See GotW #1.)</p>
</blockquote>
<p>Für mich ist hier nicht ganz klar, ob er meint, dass das normalerweise wegoptimiert wird (also copy elision) oder ob das per Definition immer so sein muss (also, ob hier mehr als copy elision passiert).<br />
Allerdings kann es eigentlich nicht per Definition immer so sein, da nicht jede Form von auto x = expr; für (N)RVO taugt!?<br />
Wenn als Konsequenz daraus nur wegoptimiert werden darf (nicht muss), ist es eigentlich logisch, dass der copy-ctor in der obigen Konstellation verfügbar sein muss. Und damit wäre das VS-Compiler Verhalten böse.</p>
<p>out schrieb:</p>
<blockquote>
<p>Dennoch muss es ein Fehler geben, da der theoretische Ablauf compilierbar sein muss.</p>
</blockquote>
<p>RVO erlaubt zwar, Seiteneffekte von copy-ctors zu ignorieren, aber wohl nicht, dass der copy-ctor nicht zugänglich ist?! Da hast Du wohl Recht.</p>
<p>Btw...</p>
<pre><code>auto l = long long{};
</code></pre>
<p>compiliert unter VS auch, obwohl das nicht ok ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372858</guid><dc:creator><![CDATA[void*]]></dc:creator><pubDate>Thu, 19 Dec 2013 17:11:12 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Thu, 19 Dec 2013 18:12:17 GMT]]></title><description><![CDATA[<p>void* schrieb:</p>
<blockquote>
<p>Unter <a href="http://herbsutter.com/2013/06/13/gotw-93-solution-auto-variables-part-2/?relatedposts_exclude=2119" rel="nofollow">http://herbsutter.com/2013/06/13/gotw-93-solution-auto-variables-part-2/?relatedposts_exclude=2119</a> steht:</p>
<p>Herb Sutter schrieb:</p>
<blockquote>
<p>By the way, if you’ve been wondering whether that “=” in auto x = expr; causes a temporary object plus a move or copy, wonder no longer: No, it constructs x directly. (See GotW #1.)</p>
</blockquote>
<p>Für mich ist hier nicht ganz klar, ob er meint, dass das normalerweise wegoptimiert wird (also copy elision) oder ob das per Definition immer so sein muss (also, ob hier mehr als copy elision passiert).</p>
</blockquote>
<p>Gemeint ist, dass die Initialisierung selbst kein zusätzliches temporäres Objekt erzeugt; nat. kann expr selbst ein temporäres Objekt sein. Der gewählte Konstruktor ist auch nicht zwingend der Copy-/Movekonstruktor - das ist allerdings der typische Fall.</p>
<p>Betrachte z.B.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

struct foo
{
    foo() { std::cout &lt;&lt; &quot;foo()\n&quot;; }
    foo(const foo&amp;) = delete;
    template &lt;typename T&gt;
    foo(T&amp;&amp;) { std::cout &lt;&lt; &quot;foo(T&amp;&amp;)\n&quot;; }
};

foo x{};

foo&amp; lvalue_src() { return x; }
const foo&amp; const_lvalue_src() { return x; }
foo prvalue_src() { return x; }
const foo const_prvalue_src() { return x; }
foo&amp;&amp; xvalue_src() { return std::move(x); }
const foo&amp;&amp; const_xvalue_src() { return std::move(x); }

int main()
{
    std::cout &lt;&lt; &quot;a &quot;; auto a = lvalue_src();
//    std::cout &lt;&lt; &quot;b &quot;; auto b = const_lvalue_src();
    std::cout &lt;&lt; &quot;c &quot;; auto c = prvalue_src();
    std::cout &lt;&lt; &quot;d &quot;; auto d = const_prvalue_src();
    std::cout &lt;&lt; &quot;e &quot;; auto e = xvalue_src();
    std::cout &lt;&lt; &quot;f &quot;; auto f = const_xvalue_src();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2372868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372868</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 19 Dec 2013 18:12:17 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Thu, 19 Dec 2013 18:31:27 GMT]]></title><description><![CDATA[<p>void* schrieb:</p>
<blockquote>
<p>auch mit /Za (Disable Language Extensions) kompiliert es.</p>
</blockquote>
<p>OK, hät ich jetzt nicht gedacht.</p>
<p>void* schrieb:</p>
<blockquote>
<p>Unter <a href="http://herbsutter.com/2013/06/13/gotw-93-solution-auto-variables-part-2/?relatedposts_exclude=2119" rel="nofollow">http://herbsutter.com/2013/06/13/gotw-93-solution-auto-variables-part-2/?relatedposts_exclude=2119</a> steht:</p>
<p>Herb Sutter schrieb:</p>
<blockquote>
<p>By the way, if you’ve been wondering whether that “=” in auto x = expr; causes a temporary object plus a move or copy, wonder no longer: No, it constructs x directly. (See GotW #1.)</p>
</blockquote>
<p>Für mich ist hier nicht ganz klar, ob er meint, dass das normalerweise wegoptimiert wird (also copy elision) oder ob das per Definition immer so sein muss (also, ob hier mehr als copy elision passiert).</p>
</blockquote>
<p>Er meint normalerweise:</p>
<p>Herb Sutter GotW #1 schrieb:</p>
<blockquote>
<p>In practice on most compilers, only a single constructor is called.</p>
</blockquote>
<p>Irgendwo da draußen gibt es bestimmt einen Compiler, der bei der Initialisierung ein Temporary erstellt und dieses dann kopiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372873</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Thu, 19 Dec 2013 18:31:27 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Fri, 20 Dec 2013 10:19:09 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Gemeint ist, dass die Initialisierung selbst kein zusätzliches temporäres Objekt erzeugt;</p>
</blockquote>
<p>Ich verstehe nicht, was Du mit &quot;Initialisierung selbst&quot; meinst. Vielleicht kannst Du mir auf die Sprünge helfen.</p>
<p>Ich sehe (unoptimiert) maximal folgenden Vorgang:</p>
<pre><code>auto C = expr;
</code></pre>
<p>- Konstruktion eines Objekts A in oder durch expr (ggf. in einer Funktion oder früher falls z.B. global wie x in Deinem Beispiel)<br />
- Kopie von A in den Stackframe des Aufrufers, dadurch entsteht Objekt B (falls expr ein Funktionsaufruf ist)<br />
- Kopie von B (oder A) in C</p>
<p>Welcher dieser Schritte ist für Dich die &quot;Initialisierung selbst&quot; (und welches das temporäre Objekt, das nicht erzeug wird)? Der letzte? Oder meinst Du etwas anderes?</p>
<p>camper schrieb:</p>
<blockquote>
<p>Der gewählte Konstruktor ist auch nicht zwingend der Copy-/Movekonstruktor - das ist allerdings der typische Fall.</p>
</blockquote>
<p>Vielen Dank für Dein Beispiel mit dem converting template ctor. Diesen Fall hatte ich vollkommen übersehen.</p>
<p>out schrieb:</p>
<blockquote>
<p>Er meint normalerweise:</p>
<p>Herb Sutter GotW #1 schrieb:</p>
<blockquote>
<p>In practice on most compilers, only a single constructor is called.</p>
</blockquote>
<p>Irgendwo da draußen gibt es bestimmt einen Compiler, der bei der Initialisierung ein Temporary erstellt und dieses dann kopiert.</p>
</blockquote>
<p>Die Stelle hätte ich selber im GotW #1 selber finden können... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /><br />
Danke!</p>
<p>Nochmal zurück zur ursprünglichen Frage:<br />
Aus Euren Erklärungen folgt, dass das was der VS2013 Compiler macht, falsch ist. Richtig? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372962</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372962</guid><dc:creator><![CDATA[void*]]></dc:creator><pubDate>Fri, 20 Dec 2013 10:19:09 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Fri, 20 Dec 2013 11:43:39 GMT]]></title><description><![CDATA[<p>void* schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>Gemeint ist, dass die Initialisierung selbst kein zusätzliches temporäres Objekt erzeugt;</p>
</blockquote>
<p>Ich verstehe nicht, was Du mit &quot;Initialisierung selbst&quot; meinst. Vielleicht kannst Du mir auf die Sprünge helfen.</p>
</blockquote>
<p>Initialisierung selbst = die Erzeugung des Objekts A. Was davor alles passiert, steht dabei nicht zur Debatte. <code>expr</code> kann ja alles möglich sein, z.B. <code>foo( bar(XYZ()) )</code> , wobei foo und bar wieder zig Objekte erstellen... Das alles hat mit der Initialisierung selbst nichts zu zun. Nur das, was das Ergebnis von <code>expr</code> ist, hat mit der Initialisierung selbst zu tun.</p>
<p>Ja, der MSVC verhält sich hier nich standardkonform. Das hat aber weder was mit auto noch mit delete noch mit sonst einem C++11 Feature zu tun. Es ist nicht standardkonform, weil theoretisch ein temporäres Objekt kopiert wird... Ohne Copy-Ctor nicht möglich, also Compilerfehler. Der MSVC hält wohl nicht viel von Theorien <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372979</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 20 Dec 2013 11:43:39 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Fri, 20 Dec 2013 12:43:34 GMT]]></title><description><![CDATA[<p>Also ich dachte bisher, dass</p>
<pre><code>T t = T(args);
</code></pre>
<p>ein Sonderfall ist und immer ohne Kopie funktionieren muss, weil</p>
<pre><code>T t(args);
</code></pre>
<p>in manchen Fällen als Funktionsdeklaration gelten kann.<br />
Dieses Verhalten hätte ich dann auch auf</p>
<pre><code>auto t = T(args)
</code></pre>
<p>übertragen.</p>
<p>Falls der Standard hier eine Kopie vorschreibt, finde ich das etwas seltsam, weil er dann eine kopierfreie Konstruktion unmöglich machen würde.</p>
<p>Aber OK, wieder was gelernt <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/2372992</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372992</guid><dc:creator><![CDATA[xor]]></dc:creator><pubDate>Fri, 20 Dec 2013 12:43:34 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Fri, 20 Dec 2013 13:15:39 GMT]]></title><description><![CDATA[<p>xor schrieb:</p>
<blockquote>
<p>Also ich dachte bisher, dass</p>
<pre><code>T t = T(args);
</code></pre>
<p>ein Sonderfall ist und immer ohne Kopie funktionieren muss</p>
</blockquote>
<p>Ne</p>
<p>xor schrieb:</p>
<blockquote>
<p>weil</p>
<pre><code>T t(args);
</code></pre>
<p>in manchen Fällen als Funktionsdeklaration gelten kann.</p>
</blockquote>
<p>Na, wenn du da Datentypen angibst bist du selber Schuld. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>xor schrieb:</p>
<blockquote>
<p>Falls der Standard hier eine Kopie vorschreibt</p>
</blockquote>
<p>Genau das tut er ja NICHT. Er sagt ausdrücklich, dass hier copy elision passieren darf. Darum gibts das ja auch im Debug-Modus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2372998</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2372998</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 20 Dec 2013 13:15:39 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Fri, 20 Dec 2013 13:22:48 GMT]]></title><description><![CDATA[<p>xor schrieb:</p>
<blockquote>
<p>Also ich dachte bisher, dass</p>
<pre><code>T t = T(args);
</code></pre>
<p>ein Sonderfall ist</p>
</blockquote>
<p>es ist ein Sonderfall insofern, als hier nicht erst eine Konvertierung in den Zieltyp vorgenommen wird, deren Ergebnis dann in das zu initialisierende Objekt kopiert/verschoben wird.</p>
<pre><code>T t = T(args);
</code></pre>
<p>ist 100% äquivalent zu</p>
<pre><code>T t(T(args));
</code></pre>
<p>ausser dass es trotzdem Copyinitialisierung ist, und damit explizite Konstruktoren nicht aufgerufen werden können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373003</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 20 Dec 2013 13:22:48 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Fri, 20 Dec 2013 13:43:10 GMT]]></title><description><![CDATA[<p>out schrieb:</p>
<blockquote>
<p>Na, wenn du da Datentypen angibst bist du selber Schuld. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ach da ging es darum, dass</p>
<pre><code>A a(B());
</code></pre>
<p>eine Funktionsdeklaration ist.<br />
Ich habe aber eben ergoogelt, dass</p>
<pre><code>A a((B()));
</code></pre>
<p>die Konstruktions-Form ist, die ich mit A a = A(B()); eigentlich erreichen wollte.</p>
<p>OK, damit verstehe ich jetzt auch, warum alles so ist, wie es ist, und dass der Standard doch nichts verbietet <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>
<p>Also Danke @out und <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
... und wieder was gelernt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373014</guid><dc:creator><![CDATA[xor]]></dc:creator><pubDate>Fri, 20 Dec 2013 13:43:10 GMT</pubDate></item><item><title><![CDATA[Reply to auto, deleted ctor on Fri, 20 Dec 2013 14:11:06 GMT]]></title><description><![CDATA[<p>xor schrieb:</p>
<blockquote>
<p>out schrieb:</p>
<blockquote>
<p>Na, wenn du da Datentypen angibst bist du selber Schuld. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
</blockquote>
<p>Ach da ging es darum, dass</p>
<pre><code>A a(B());
</code></pre>
<p>eine Funktionsdeklaration ist.</p>
</blockquote>
<p>Ja ok, das ist wirklich ein doofer Fall, weil du ja Parameternamen weglassen darfst. In dem Fall brauchst dann nochmal eine Klammer drumrum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2373029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2373029</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Fri, 20 Dec 2013 14:11:06 GMT</pubDate></item></channel></rss>