<?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[type_traits und access modifiers]]></title><description><![CDATA[<p>Guten Morgen</p>
<p>Ich habe unterschiedliches Verhalten der type_traits festgestellt. Gegeben sei folgendes Stück Code, womit man den Effekt testen kann:</p>
<pre><code>#include &lt;type_traits&gt;

class foo
{
private:
    foo()
    {
    }
};

int main()
{
    static_assert(std::is_default_constructible&lt;foo&gt;::value, &quot;Nope.&quot;);
    return 0;    
}
</code></pre>
<p>Das spannende ist hier natürlich, dass der Konstruktor von foo private ist. Nun ist es so, dass z.B. LLVM mir sagt, dass das nicht geht - Visual C++ (neuste Version 2013 CTP) hingegen findet schon und kompiliert das anstandslos.</p>
<p>Was ist nun richtig, und was sagt der Standard darüber? Ich konnte spontan nichts finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Freundliche Grüsse</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319769/type_traits-und-access-modifiers</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Jul 2026 22:14:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319769.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 02 Sep 2013 08:45:28 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to type_traits und access modifiers on Mon, 02 Sep 2013 08:45:28 GMT]]></title><description><![CDATA[<p>Guten Morgen</p>
<p>Ich habe unterschiedliches Verhalten der type_traits festgestellt. Gegeben sei folgendes Stück Code, womit man den Effekt testen kann:</p>
<pre><code>#include &lt;type_traits&gt;

class foo
{
private:
    foo()
    {
    }
};

int main()
{
    static_assert(std::is_default_constructible&lt;foo&gt;::value, &quot;Nope.&quot;);
    return 0;    
}
</code></pre>
<p>Das spannende ist hier natürlich, dass der Konstruktor von foo private ist. Nun ist es so, dass z.B. LLVM mir sagt, dass das nicht geht - Visual C++ (neuste Version 2013 CTP) hingegen findet schon und kompiliert das anstandslos.</p>
<p>Was ist nun richtig, und was sagt der Standard darüber? Ich konnte spontan nichts finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Freundliche Grüsse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349790</guid><dc:creator><![CDATA[*rant*]]></dc:creator><pubDate>Mon, 02 Sep 2013 08:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to type_traits und access modifiers on Mon, 02 Sep 2013 09:29:48 GMT]]></title><description><![CDATA[<blockquote>
<p>[...]has an <strong>accessible</strong> explicit or implicit default constructor.[...]</p>
</blockquote>
<p><a href="http://en.cppreference.com/w/cpp/types/is_default_constructible" rel="nofollow">Quelle</a></p>
<p>Von daher tipp' ich mal, dass MSVC der Bösewicht ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349802</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349802</guid><dc:creator><![CDATA[__Cappuccino__]]></dc:creator><pubDate>Mon, 02 Sep 2013 09:29:48 GMT</pubDate></item><item><title><![CDATA[Reply to type_traits und access modifiers on Mon, 02 Sep 2013 09:36:48 GMT]]></title><description><![CDATA[<p>Gleich kommt Sone wieder an und flamet gegen den MSVC <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/2349805</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349805</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 02 Sep 2013 09:36:48 GMT</pubDate></item><item><title><![CDATA[Reply to type_traits und access modifiers on Mon, 02 Sep 2013 09:39:07 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>Gleich kommt Sone wieder an und flamet gegen den MSVC <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>Gegen den C++-Compiler: Zu Recht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349808</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349808</guid><dc:creator><![CDATA[__Cappuccino__]]></dc:creator><pubDate>Mon, 02 Sep 2013 09:39:07 GMT</pubDate></item><item><title><![CDATA[Reply to type_traits und access modifiers on Mon, 02 Sep 2013 09:44:03 GMT]]></title><description><![CDATA[<p>Ich habe jetzt ne Weile im Standard rumgegurkt, aber nichts klares gefunden, bist auf:</p>
<p>20.11.4.3/6 schrieb:</p>
<blockquote>
<p>Given the following function prototype:</p>
<pre><code>template &lt;class T&gt;
typename add_rvalue_reference&lt;T&gt;::type create();
</code></pre>
<p>the predicate condition for a template specialization <strong>is_constructible&lt;T, Args...&gt;</strong> shall be satisﬁed<br />
if and only if the following variable deﬁnition would be well-formed for some invented variable t:</p>
<pre><code>T t(create&lt;Args&gt;()...);
</code></pre>
</blockquote>
<p>is_default_constructable erfordert is_constructable. Und</p>
<pre><code>T t(create&lt;Args&gt;()...);
</code></pre>
<p>impliziert, dass man T auch ohne Argumente, also default konstruieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2349811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2349811</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 02 Sep 2013 09:44:03 GMT</pubDate></item></channel></rss>