<?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[Konstructor aufrufbarkeit prüfen]]></title><description><![CDATA[<p>Hi,<br />
kennt jemand eine Möglichkeit wie man ermitteln könnte mit welchen Parametern ein Konstruktor aufrufbar ist? - sprich ob eine bestimmte Konstruktor-Überladungen existieren?</p>
<p>in vorraus dankend<br />
der ctor</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/277239/konstructor-aufrufbarkeit-prüfen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 22:47:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/277239.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Nov 2010 09:55:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Mon, 15 Nov 2010 09:55:25 GMT]]></title><description><![CDATA[<p>Hi,<br />
kennt jemand eine Möglichkeit wie man ermitteln könnte mit welchen Parametern ein Konstruktor aufrufbar ist? - sprich ob eine bestimmte Konstruktor-Überladungen existieren?</p>
<p>in vorraus dankend<br />
der ctor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980648</guid><dc:creator><![CDATA[ctor]]></dc:creator><pubDate>Mon, 15 Nov 2010 09:55:25 GMT</pubDate></item><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Mon, 15 Nov 2010 09:58:27 GMT]]></title><description><![CDATA[<p>Man ruft ihn mit den Parametern auf und hält nach Fehlermeldungen des Compilers Auschau.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980650</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 15 Nov 2010 09:58:27 GMT</pubDate></item><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Mon, 15 Nov 2010 10:11:05 GMT]]></title><description><![CDATA[<p>dies würde ich allerdings in der Compilierungszeit ermitteln, sodas ich ein boolschen rückgabewert bekomme.<br />
z.B.</p>
<pre><code class="language-cpp">struct X
{
  X(int,int,int);
  X(string);
  X(float);
};

int main()
{
  std::cout &lt;&lt; ist_ctor_von&lt;X&gt;::so_aufrufbar&lt;int,int,int&gt;::value ;
}
</code></pre>
<p>Ich möchte das für eine Template-klasse mit templatesierten konstruktor, um diverse konstruktoren auszuschließen, damit std::is_convertible richtige ergebnisse liefert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980653</guid><dc:creator><![CDATA[ctor]]></dc:creator><pubDate>Mon, 15 Nov 2010 10:11:05 GMT</pubDate></item><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Mon, 15 Nov 2010 19:46:27 GMT]]></title><description><![CDATA[<p>Das geht AFAIK nur in C++0x (und zwar mit SFINAE), ungetestet (und da gibt es bei mir bei SFINAE erfahrungsgemäß am Anfang viele Fehler):</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;typename T&gt; T create_helper();

template&lt;typename T&gt; class SFINAE
{
    typedef struct{T[2] tmp;} False_Help;
    template&lt;typename... Args&gt; static auto Has_This_Constructor(T in) -&gt; decltype(T(create_helper&lt;Args&gt;()...));
    template&lt;typename... Args&gt; static False_Help Has_This_Constructor(...);
}

template&lt;typename T, typename... Args&gt; bool HasConstructor
{
    return sizeof(SFINAE&lt;T&gt;::Has_This_Constructor&lt;Args...&gt;(create_helper&lt;T&gt;())) == sizeof(T);
}

int main()
{
    std::cout &lt;&lt; std::boolalpha &lt;&lt; HasConstructor&lt;int, int&gt;() &lt;&lt; &quot;\n&quot;;
}
</code></pre>
<p>ABER: Möchtest du abhängig davon einen unterschiedlichen Konstruktor aufrufen, brauchst du überladene Klassen mit einem Boolean-Parameter, der von dem sizeof()-Vergleich abhängt. (also les dir das in aller Ruhe nochmal durch, ich hab auch eine Weile gebraucht)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980954</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Mon, 15 Nov 2010 19:46:27 GMT</pubDate></item><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Mon, 15 Nov 2010 19:59:20 GMT]]></title><description><![CDATA[<p>HALT: ich habe doch schon mal fast das gleiche geschrieben:<br />
<a href="http://www.c-plusplus.net/forum/274260-30" rel="nofollow">http://www.c-plusplus.net/forum/274260-30</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1980965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1980965</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Mon, 15 Nov 2010 19:59:20 GMT</pubDate></item><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Tue, 16 Nov 2010 19:34:48 GMT]]></title><description><![CDATA[<p>Super, genau sowas wollte ich!!</p>
<p>allerdings funktioniert es bei mir noch nicht ganz, sobald ich eine falsche Parameterkombi teste, fängt der Compiler an zu meckern.</p>
<pre><code class="language-cpp">template&lt;typename T&gt; T create_helper();

template&lt;typename T&gt; struct SFINAE
{
    typedef struct{T tmp[2];} False_Help;
    template&lt;typename... Args&gt; static auto Has_This_Constructor(T in) -&gt; decltype(T(create_helper&lt;Args&gt;()...));
    template&lt;typename... Args&gt; static False_Help Has_This_Constructor(...);
};

template&lt;typename T, typename... Args&gt; bool HasConstructor()
{
    return sizeof(SFINAE&lt;T&gt;::template Has_This_Constructor&lt;Args...&gt;(create_helper&lt;T&gt;())) == sizeof(T);
}

int main()
{
    std::cout &lt;&lt; std::boolalpha &lt;&lt; HasConstructor&lt;int, int,int&gt;() &lt;&lt; &quot;\n&quot;;
}
</code></pre>
<p>bei zeile 8 : |error: functional cast expression list treated as compound expression|</p>
<p>Des weiteren bin ich mir nicht sicher, ob es richtig ist es nach der Größe von False_Help zu testen(was ist wenn eine andere Klasse gleichgroß ist?).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981385</guid><dc:creator><![CDATA[ctor]]></dc:creator><pubDate>Tue, 16 Nov 2010 19:34:48 GMT</pubDate></item><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Tue, 16 Nov 2010 19:35:56 GMT]]></title><description><![CDATA[<p>ups meine zeile 6...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981389</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981389</guid><dc:creator><![CDATA[ctor]]></dc:creator><pubDate>Tue, 16 Nov 2010 19:35:56 GMT</pubDate></item><item><title><![CDATA[Reply to Konstructor aufrufbarkeit prüfen on Wed, 17 Nov 2010 15:30:06 GMT]]></title><description><![CDATA[<p>1. Welchen Compiler verwendest du und unterstützt der C++0x? Ich verwende GCC 4.5.1.<br />
2. Nimm doch mal meine Lösung von Seite 4 unten meines Threads und änder sie ein wenig ab, die ist nämlich getestet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1981785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1981785</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Wed, 17 Nov 2010 15:30:06 GMT</pubDate></item></channel></rss>