<?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[is_copy_assignable ist nicht genug!]]></title><description><![CDATA[<p>Ich leide gerade darunter, dass</p>
<pre><code>std::is_copy_assignable &lt;std::vector &lt;std::unique_ptr &lt;A&gt;&gt;&gt;::value
</code></pre>
<p>wahr ist.</p>
<p>EDIT: <strong>Folgendes ist nur ein beispiel! Wenn man das nicht erkennt versteht man warscheinlich nicht die Kommentare, oder mein Post.</strong></p>
<pre><code>#include &lt;iostream&gt;
#include &lt;memory&gt;
#include &lt;type_traits&gt;
#include &lt;vector&gt;

using namespace std;

class A {virtual void f() = 0;};

class B : public A {void f() override {}};

int main()
{
    std::cout &lt;&lt; std::is_copy_assignable &lt;std::vector &lt;std::unique_ptr &lt;A&gt;&gt;&gt;::value &lt;&lt; &quot;\n&quot;; // -&gt; 1
    std::vector &lt;std::unique_ptr &lt;A&gt;&gt; a;
    a = {}; // booommm!! (Die Zeile sollte nur einkompiliert werden, wenn ich a auch {} zuweisen kann.)

    return 0;
}
</code></pre>
<p>Ich brauche eine andere Lösung, da das copy assignment offensichtlich nicht kompiliert. =&gt; Mein AssignIfAssignable kompiliert nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/339648/is_copy_assignable-ist-nicht-genug</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 02:00:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/339648.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Sep 2016 13:32:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to is_copy_assignable ist nicht genug! on Fri, 16 Sep 2016 15:15:26 GMT]]></title><description><![CDATA[<p>Ich leide gerade darunter, dass</p>
<pre><code>std::is_copy_assignable &lt;std::vector &lt;std::unique_ptr &lt;A&gt;&gt;&gt;::value
</code></pre>
<p>wahr ist.</p>
<p>EDIT: <strong>Folgendes ist nur ein beispiel! Wenn man das nicht erkennt versteht man warscheinlich nicht die Kommentare, oder mein Post.</strong></p>
<pre><code>#include &lt;iostream&gt;
#include &lt;memory&gt;
#include &lt;type_traits&gt;
#include &lt;vector&gt;

using namespace std;

class A {virtual void f() = 0;};

class B : public A {void f() override {}};

int main()
{
    std::cout &lt;&lt; std::is_copy_assignable &lt;std::vector &lt;std::unique_ptr &lt;A&gt;&gt;&gt;::value &lt;&lt; &quot;\n&quot;; // -&gt; 1
    std::vector &lt;std::unique_ptr &lt;A&gt;&gt; a;
    a = {}; // booommm!! (Die Zeile sollte nur einkompiliert werden, wenn ich a auch {} zuweisen kann.)

    return 0;
}
</code></pre>
<p>Ich brauche eine andere Lösung, da das copy assignment offensichtlich nicht kompiliert. =&gt; Mein AssignIfAssignable kompiliert nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2508822</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508822</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Fri, 16 Sep 2016 15:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to is_copy_assignable ist nicht genug! on Fri, 16 Sep 2016 15:55:11 GMT]]></title><description><![CDATA[<p>Ich glaube nicht, dass sich das so im allgemeinen Fall lösen lässt, weil der Compilerfehler nicht etwa wegen einem fehlenden <code>std::vector&lt;std::unique_ptr&lt;A&gt;&gt;::vector</code> auftritt, sondern weil Besagter wiederum auf nicht-existente Funktionen zuzugreifen versucht, was leider nicht SFINAE-friendly ist. Eine Möglichkeit wäre es, ein eigenes <code>is_copy_assignable</code> zu implementieren, das auch die Template-Argumente von Containern überprüft:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;memory&gt;
#include &lt;type_traits&gt;
#include &lt;vector&gt;

template&lt;typename T&gt;
struct is_copy_assignable : std::is_copy_assignable&lt;T&gt;{};
template&lt;typename T, typename alloc_t&gt;
struct is_copy_assignable&lt;std::vector&lt;T, alloc_t&gt;&gt; : std::is_copy_assignable&lt;T&gt;{};

int main()
{
    std::cout &lt;&lt; is_copy_assignable&lt;std::vector&lt;int&gt;&gt;::value &lt;&lt; '\n'; // 1
    std::cout &lt;&lt; is_copy_assignable&lt;std::vector&lt;std::unique_ptr&lt;int&gt;&gt;&gt;::value &lt;&lt; '\n'; // 0
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2508831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2508831</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Fri, 16 Sep 2016 15:55:11 GMT</pubDate></item></channel></rss>