<?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[Schauen, ob Member-Funktion exestiert?]]></title><description><![CDATA[<p>Hallo,<br />
gibt es irgendeine Möglichkeit zur Compilezeit zu sehen, ob eine statische Member-Funktion einer Klasse exestiert?<br />
Am Ende sollte dann soetwas funktionieren:</p>
<pre><code class="language-cpp">class B
{
  //int Memberfunction();
};

//Funktion &quot;Memberfunction&quot; exestiert nicht in B
template&lt;bool b&gt; class AImpl
{
};

//Funktion &quot;Memberfunction&quot; exestiert in B
template&lt;&gt; class AImpl&lt;true&gt;
{
};

class A:
  public AImpl&lt;member_functions_exists&lt;B::Memberfunction&gt; &gt;
{
};
</code></pre>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196357/schauen-ob-member-funktion-exestiert</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 10:07:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196357.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 28 Oct 2007 19:22:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schauen, ob Member-Funktion exestiert? on Sun, 28 Oct 2007 19:22:56 GMT]]></title><description><![CDATA[<p>Hallo,<br />
gibt es irgendeine Möglichkeit zur Compilezeit zu sehen, ob eine statische Member-Funktion einer Klasse exestiert?<br />
Am Ende sollte dann soetwas funktionieren:</p>
<pre><code class="language-cpp">class B
{
  //int Memberfunction();
};

//Funktion &quot;Memberfunction&quot; exestiert nicht in B
template&lt;bool b&gt; class AImpl
{
};

//Funktion &quot;Memberfunction&quot; exestiert in B
template&lt;&gt; class AImpl&lt;true&gt;
{
};

class A:
  public AImpl&lt;member_functions_exists&lt;B::Memberfunction&gt; &gt;
{
};
</code></pre>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393786</guid><dc:creator><![CDATA[funct0r]]></dc:creator><pubDate>Sun, 28 Oct 2007 19:22:56 GMT</pubDate></item><item><title><![CDATA[Reply to Schauen, ob Member-Funktion exestiert? on Sun, 28 Oct 2007 19:35:36 GMT]]></title><description><![CDATA[<p>Gibt es:<br />
<a href="http://www.boost.org/libs/mpl/doc/refmanual/has-xxx-trait-def.html" rel="nofollow">http://www.boost.org/libs/mpl/doc/refmanual/has-xxx-trait-def.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393789</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393789</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 28 Oct 2007 19:35:36 GMT</pubDate></item><item><title><![CDATA[Reply to Schauen, ob Member-Funktion exestiert? on Sun, 28 Oct 2007 19:53:49 GMT]]></title><description><![CDATA[<p>Cool. Gibt es auch soetwas, um eine spezielle Funktion zu finden (z.B. Hat Klasse X die statische Member-Funktion mit zwei Template-Argumenten und 3 normalen Argumenten)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393800</guid><dc:creator><![CDATA[funct0r]]></dc:creator><pubDate>Sun, 28 Oct 2007 19:53:49 GMT</pubDate></item><item><title><![CDATA[Reply to Schauen, ob Member-Funktion exestiert? on Sun, 28 Oct 2007 19:58:10 GMT]]></title><description><![CDATA[<p>Wozu brauchst du eigtl. diese Infos? also in deinem Programm, irgendwie hört sich das etwas schräg an ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393803</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393803</guid><dc:creator><![CDATA[Checker*amp*Murckser]]></dc:creator><pubDate>Sun, 28 Oct 2007 19:58:10 GMT</pubDate></item><item><title><![CDATA[Reply to Schauen, ob Member-Funktion exestiert? on Sun, 28 Oct 2007 20:13:09 GMT]]></title><description><![CDATA[<p>Checker&amp;Murckser schrieb:</p>
<blockquote>
<p>Wozu brauchst du eigtl. diese Infos? also in deinem Programm, irgendwie hört sich das etwas schräg an ...</p>
</blockquote>
<p>Für Optimierungen würd' ich das benutzen. Standardbeispiel ist std::sort auf einer Range, was man mithilfe solcher schrägen Sachen für einzelne Container überladen könnte:</p>
<pre><code class="language-cpp">template &lt;class Range&gt;
void sort (Range const&amp; r)
{
    do_sort (r, has_sort&lt;Range&gt;);
}

template &lt;class Range&gt;
void do_sort (Range const&amp; r, true_type const&amp;)
{
    r.sort ();
}

template &lt;class Range&gt;
void do_sort (Range const&amp; r, false_type const&amp;)
{ // normaler Sortieralgorithmus
}
</code></pre>
<p>Geht bestimmt auch trickier, aber das fällt mir da direkt ein.</p>
<p>funct0r schrieb:</p>
<blockquote>
<p>Cool. Gibt es auch soetwas, um eine spezielle Funktion zu finden (z.B. Hat Klasse X die statische Member-Funktion mit zwei Template-Argumenten und 3 normalen Argumenten)?</p>
</blockquote>
<p>Hmm, die normalen Argumente kannst du vielleicht erwischen, für die Templateargumente fällt mir gerade nichts ein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393817</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393817</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Sun, 28 Oct 2007 20:13:09 GMT</pubDate></item><item><title><![CDATA[Reply to Schauen, ob Member-Funktion exestiert? on Sun, 28 Oct 2007 21:30:09 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Gibt es:<br />
<a href="http://www.boost.org/libs/mpl/doc/refmanual/has-xxx-trait-def.html" rel="nofollow">http://www.boost.org/libs/mpl/doc/refmanual/has-xxx-trait-def.html</a></p>
</blockquote>
<p>Das findet aber nur Typen.</p>
<p>funct0r schrieb:</p>
<blockquote>
<p>Cool. Gibt es auch soetwas, um eine spezielle Funktion zu finden (z.B. Hat Klasse X die statische Member-Funktion mit zwei Template-Argumenten und 3 normalen Argumenten)?</p>
</blockquote>
<p>Unwahrscheinlich. Was man braucht, ist ein Konstrukt, das legal ist, unabhängig davon, ob der betreffende Memember existiert oder nicht, aber in Abhängigkeit davon seine Bedeutung verändert. Für solche Dinge fällt mir SFINAE ein. Das Problem mit Funktionstemplates (nicht: Templatefunktionen - die haben keine Templateparameter) ist, dass sie nichts selbst Parameter eines Templates sein können. Daher sehe ich hier kaum eine Möglichkeit. In der Regel interessiert ja aber auch nur, ob eine bestimmte Operation existiert, unabhängig davon, ob diese durch ein Template oder z.B. einfache Funktionsüberladung realisiert wurde.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1393847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1393847</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sun, 28 Oct 2007 21:30:09 GMT</pubDate></item></channel></rss>