<?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::is_integral und std::enable_if]]></title><description><![CDATA[<p>Eine Klasse von mir nimmt einen Templateparameter. Ich möchte, das nur integrale Typen akzeptiert werden und ansonsten der Compiler schreit.</p>
<pre><code>#pragma once

#include &lt;cstdlib&gt;
#include &lt;initializer_list&gt;
#include &lt;type_traits&gt;

template &lt;typename T&gt;
typename std::enable_if&lt;std::is_integral&lt;T&gt;::value, void&gt;::type
class Vector
{
public:
	explicit Vector(std::size_t size) : m_size(size) {}
	Vector(const std::initializer_list&lt;T&gt; args) {}
};
</code></pre>
<p>Nur wie genau mache ich das syntaktisch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/325842/std-is_integral-und-std-enable_if</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 21:52:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325842.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 20 May 2014 14:57:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to std::is_integral und std::enable_if on Tue, 20 May 2014 14:57:44 GMT]]></title><description><![CDATA[<p>Eine Klasse von mir nimmt einen Templateparameter. Ich möchte, das nur integrale Typen akzeptiert werden und ansonsten der Compiler schreit.</p>
<pre><code>#pragma once

#include &lt;cstdlib&gt;
#include &lt;initializer_list&gt;
#include &lt;type_traits&gt;

template &lt;typename T&gt;
typename std::enable_if&lt;std::is_integral&lt;T&gt;::value, void&gt;::type
class Vector
{
public:
	explicit Vector(std::size_t size) : m_size(size) {}
	Vector(const std::initializer_list&lt;T&gt; args) {}
};
</code></pre>
<p>Nur wie genau mache ich das syntaktisch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400065</guid><dc:creator><![CDATA[asghfzjf]]></dc:creator><pubDate>Tue, 20 May 2014 14:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to std::is_integral und std::enable_if on Tue, 20 May 2014 15:03:39 GMT]]></title><description><![CDATA[<p>siehe <a href="http://www.boost.org/doc/libs/1_55_0/libs/utility/enable_if.html" rel="nofollow">http://www.boost.org/doc/libs/1_55_0/libs/utility/enable_if.html</a> Absatz: &quot;3.2 Enabling template class specializations&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400068</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Tue, 20 May 2014 15:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to std::is_integral und std::enable_if on Tue, 20 May 2014 15:47:29 GMT]]></title><description><![CDATA[<p>Ganz anders. Dafür nutzt man <code>static_assert</code> . Das sollte dein Compiler bereitstellen, da du ja auch <code>initializer_list</code> verwendest.</p>
<pre><code>template &lt;typename T&gt;
class Vector
{
public:
    static_assert( std::is_integral&lt;T&gt;::value, &quot;Fehlermeldung&quot; );

    ....
};
</code></pre>
<p><code>enable_if</code> würde man bei Klassentemplates eher für partielle Spezialisierungen einsetzen.</p>
<p>Edit: P.S.: <code>enable_if</code> 's zweiter Template-Parameter hat schon <code>void</code> als Default-Argument.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400073</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Tue, 20 May 2014 15:47:29 GMT</pubDate></item></channel></rss>