<?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[Wie kann man überprüfen ob ein Type definiert ist?]]></title><description><![CDATA[<p>Ich möchte in meinem Programm gern testen, ob ein bestimmter Type gesetzt ist und entsprechend dann dafür Code erzeugen.</p>
<pre><code class="language-cpp">struct Config {
    typedef long h;
    typedef int gw;
    // und so weiter ...
};
</code></pre>
<p>Wenn jetzt z.B. der Type Config::gw gestetzt ist, möchte ich mit Mitteln der Template Meta Programmierung entsprechenden Quellcode erzeugen. Wenn dieser Type jedoch nicht da ist, eben nicht, aber der Compiler soll auch nicht mit der Fehlermeldung aussteigen, dass ein entsprechender Type nicht definiert ist.</p>
<p>Gibt es eine Möglichkeit zu testen, ob ein Type definiert ist, ohne das der Compiler aussteigt mit einer Fehlermeldung?</p>
<p>Danke schon mal im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/234996/wie-kann-man-überprüfen-ob-ein-type-definiert-ist</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 06:30:03 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/234996.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Feb 2009 14:03:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 14:03:53 GMT]]></title><description><![CDATA[<p>Ich möchte in meinem Programm gern testen, ob ein bestimmter Type gesetzt ist und entsprechend dann dafür Code erzeugen.</p>
<pre><code class="language-cpp">struct Config {
    typedef long h;
    typedef int gw;
    // und so weiter ...
};
</code></pre>
<p>Wenn jetzt z.B. der Type Config::gw gestetzt ist, möchte ich mit Mitteln der Template Meta Programmierung entsprechenden Quellcode erzeugen. Wenn dieser Type jedoch nicht da ist, eben nicht, aber der Compiler soll auch nicht mit der Fehlermeldung aussteigen, dass ein entsprechender Type nicht definiert ist.</p>
<p>Gibt es eine Möglichkeit zu testen, ob ein Type definiert ist, ohne das der Compiler aussteigt mit einer Fehlermeldung?</p>
<p>Danke schon mal im voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669354</guid><dc:creator><![CDATA[mysterio]]></dc:creator><pubDate>Tue, 24 Feb 2009 14:03:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 14:28:41 GMT]]></title><description><![CDATA[<p>#ifdef ? nicht sicher, aber sollte funktionieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669376</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669376</guid><dc:creator><![CDATA[loki1985]]></dc:creator><pubDate>Tue, 24 Feb 2009 14:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 14:30:31 GMT]]></title><description><![CDATA[<p>Dies sollte funktionieren:</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////////////////////////////
// main : Implementation file

#include &lt;iostream&gt;

template&lt;typename T, typename GW = void&gt;
struct CheckGW
{
	static bool const RESULT = false;
};

template&lt;typename T&gt;
struct CheckGW&lt;T, typename T::gw&gt;
{
	static bool const RESULT = true;
};

template&lt;bool S, typename T1, typename T2&gt;
struct Select
{
	typedef T1 Result;
};

template&lt;typename T1, typename T2&gt;
struct Select&lt;false, T1, T2&gt;
{
	typedef T2 Result;
};

struct StructWithGW
{
	typedef int gw;
};

template&lt;int I&gt;
struct Int2Type
{
};

void foo(Int2Type&lt;true&gt;)
{
	std::cout &lt;&lt; &quot;true&quot; &lt;&lt; std::endl;
}

void foo(Int2Type&lt;false&gt;)
{
	std::cout &lt;&lt; &quot;false&quot; &lt;&lt; std::endl;
}

int main()
{
	bool const DO_SELECT = CheckGW&lt;StructWithGW&gt;::RESULT;

	foo(Select
		&lt;
			DO_SELECT,
			Int2Type&lt;true&gt;,
			Int2Type&lt;false&gt;
		&gt;::Result());

	std::cin.get();

	return 0;
}
</code></pre>
<p>Hab es aber nicht zu 100% geprüft. Aber denke eigentlich schon, dass es geht. Zumindest sollte es die richtige Richtung sein.<br />
<code>Select</code> und co ist ganz wichtig, damit kannst du Verzweigungen hinbekommen, ohne das ein Compilerfehler entsteht, wenn etwas vorhanden oder nicht vorhanden ist.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669378</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 24 Feb 2009 14:30:31 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 15:14:15 GMT]]></title><description><![CDATA[<p>Schönen Dank für die schnelle Antwort und in der Richtung hatte ich mir dies schon in etwa auch gedacht. Leider funktioniert bei mir der Quellcode nicht wirklich.</p>
<p>Es wird immer zu false evaluiert und ich kann auch leider nicht erkennen, woran dies liegt. Ich verwende eine g++-4.3.2 und habe es auch auf einem g++-4.1.2 unter linux getestet. Ich denke aber, dass es nicht am compiler liegt.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669417</guid><dc:creator><![CDATA[mysterio]]></dc:creator><pubDate>Tue, 24 Feb 2009 15:14:15 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 15:58:55 GMT]]></title><description><![CDATA[<p>Ach ich Trottle, der Code kann nicht funktionieren. Verändere die folgende Zeile, wie folgt:</p>
<pre><code class="language-cpp">bool const DO_SELECT = CheckGW&lt;StructWithGW, int&gt;::RESULT;
</code></pre>
<p>Jetzt wird <code>DO_SELECT</code> true sein. Allerdings ist es nicht das, was du willst. Zeigt dafür sehr schön meinen Denkfehler <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Aktuell fällt mir nix ein, wie man es denn nun machen könnte. Ich werde mir das nochmals durch den Kopf gehen lassen, vielleicht fällt mir noch was ein. Aber aktuell muss ich zur Post <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669453</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 24 Feb 2009 15:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 16:06:27 GMT]]></title><description><![CDATA[<p>Ja, genau. So hatte ich es auch hinbekommen, aber wie Du schon sagst ist es nicht ganz was ich brauchen würde. Aber trotzdem schon mal Danke. Wenn Dir oder jemand anderem noch was einfällt, wäre ich über weitere Hilfe dankbar.</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669464</guid><dc:creator><![CDATA[mysterio]]></dc:creator><pubDate>Tue, 24 Feb 2009 16:06:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 17:32:09 GMT]]></title><description><![CDATA[<p>Ok, also diese Lösung funktioniert auf dem MSVC2008:</p>
<pre><code class="language-cpp">//////////////////////////////////////////////////////////////////////////
// main : Implementation file

#include &lt;iostream&gt;

template&lt;bool S, typename T1, typename T2&gt;
struct Select
{
	typedef T1 Result;
};

template&lt;typename T1, typename T2&gt;
struct Select&lt;false, T1, T2&gt;
{
	typedef T2 Result;
};

struct StructWithGW
{
	typedef int gw;
};

template&lt;int I&gt;
struct Int2Type
{
};

template&lt;typename T&gt;
struct Type2Type
{
};

typedef char Small;
class Big { char dummy[2]; };

template&lt;typename T&gt;
Small check_gw(Type2Type&lt;typename T::gw&gt; tt = Type2Type&lt;typename T::gw&gt;());

template&lt;typename T&gt;
Big check_gw(Type2Type&lt;T&gt; tt = Type2Type&lt;T&gt;());

void foo(Int2Type&lt;true&gt;)
{
	std::cout &lt;&lt; &quot;true&quot; &lt;&lt; std::endl;
}

void foo(Int2Type&lt;false&gt;)
{
	std::cout &lt;&lt; &quot;false&quot; &lt;&lt; std::endl;
}

int main()
{
	bool const FIRST = sizeof(check_gw&lt;int&gt;()) == sizeof(Small);
	bool const SECOND = sizeof(check_gw&lt;StructWithGW&gt;()) == sizeof(Small);

	foo(Select
		&lt;
			FIRST,
			Int2Type&lt;true&gt;,
			Int2Type&lt;false&gt;
		&gt;::Result());

	foo(Select
		&lt;
			SECOND,
			Int2Type&lt;true&gt;,
			Int2Type&lt;false&gt;
		&gt;::Result());

	std::cin.get();

	return 0;
}
</code></pre>
<p>Ich möchte jetzt aber keine Frage hören, wieso denn der Kompiler nun die richtige Funktion der beiden <code>check_gw</code> auswählt. Denn ich habe keine Ahnung oder höchsten so einen ganz kleinen Schimmer, aber ob dies dann wirklich auch dem Standard entspricht, weiss ich nicht.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669521</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 24 Feb 2009 17:32:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 17:45:54 GMT]]></title><description><![CDATA[<p>Sieht nach SFINAE aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669528</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Feb 2009 17:45:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 17:51:38 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Sieht nach SFINAE aus.</p>
</blockquote>
<p>Jo, das ist auch mein leichter Schimmer, bzw. noch mit der Kombination um den ambiguous Call zu verhindern, denn diese Funktion:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
Big check_gw(Type2Type&lt;T&gt; tt = Type2Type&lt;T&gt;());
</code></pre>
<p>Sollte ja eigentlich für jeden Typen passen. Also auch für StructWithGW. Trotzdem wird die andere Funktion ausgewählt und kein Kompilerfehler im Sinne von &quot;ambiguous Call&quot; geworfen, da eigentlich beide <code>check_gw</code> passen würden. Deshalb bin ich grad ein wenig überrascht, dass es wirklich funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669533</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 24 Feb 2009 17:51:38 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 18:13:18 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>diese Funktion:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
Big check_gw(Type2Type&lt;T&gt; tt = Type2Type&lt;T&gt;());
</code></pre>
<p>Sollte ja eigentlich für jeden Typen passen. Also auch für StructWithGW. Trotzdem wird die andere Funktion ausgewählt und kein Kompilerfehler im Sinne von &quot;ambiguous Call&quot; geworfen, da eigentlich beide <code>check_gw</code> passen würden. Deshalb bin ich grad ein wenig überrascht, dass es wirklich funktioniert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
</blockquote>
<p>Bei mir bricht der Compiler genau damit ab und sagt, es ist ein &quot;ambiguous call&quot;.</p>
<p>Da würde ich doch dann glatt mal behaupten, dass der g++ hier wohl dichter am Standard ist. Nur leider hilft mir dies nicht. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich will mal versuchen die Funktion in eine Struktur zu packen. Vielleicht hilft dies.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669544</guid><dc:creator><![CDATA[mysterio]]></dc:creator><pubDate>Tue, 24 Feb 2009 18:13:18 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 18:30:54 GMT]]></title><description><![CDATA[<p>Schreib mal diese Funktion um...</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
Big check_gw(Type2Type&lt;T&gt; tt = Type2Type&lt;T&gt;());
</code></pre>
<p>... zu:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
Big check_gw(...);
</code></pre>
<p>Die Ellipse hat die niedrigste Priorität, um als Treffer in Frage zu kommen. Das könnte vielleicht den &quot;ambiguous call&quot; lösen.</p>
<p>Übrigens, was willst du damit genau erreichen? Die Lösung ist ein wenig komplex, um damit was sinnvolles zu machen, habe ich zumindest das Gefühl <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Vielleicht könnte man dein Problem einfacher lösen, mit anderen Mitteln <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669553</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 24 Feb 2009 18:30:54 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 18:51:36 GMT]]></title><description><![CDATA[<p>Womit lernt man derartige Templateprogrammierung? Buch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669569</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669569</guid><dc:creator><![CDATA[oO]]></dc:creator><pubDate>Tue, 24 Feb 2009 18:51:36 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 18:57:43 GMT]]></title><description><![CDATA[<p>oO schrieb:</p>
<blockquote>
<p>Womit lernt man derartige Templateprogrammierung? Buch?</p>
</blockquote>
<p>Jop.</p>
<p><a href="http://www.amazon.com/Modern-Design-Programming-Patterns-Depth/dp/0201704315" rel="nofollow">http://www.amazon.com/Modern-Design-Programming-Patterns-Depth/dp/0201704315</a></p>
<p><a href="http://www.josuttis.com/tmplbook/index.html" rel="nofollow">http://www.josuttis.com/tmplbook/index.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669574</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 24 Feb 2009 18:57:43 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 19:01:30 GMT]]></title><description><![CDATA[<p>Dies mit der Ellipse hilft leider nicht.</p>
<p>Was ich erreichen will? Also ich habe eine etwas komplexere Konfiguration in einer Klasse config zusammengefasst.</p>
<p>etwas sowas:</p>
<pre><code class="language-cpp">struct config {
   typedef xy&lt;a,b,c&gt;   nl;
   typedef yz&lt;nl, ...&gt; anl;
   typedef ab&lt;anl, ... &gt; gw;
};
</code></pre>
<p>in manchen Konfigurationen habe ich nun den Type gw und muss dann entsprechenden Code für die Initialisierung etc. generieren. Dazu habe vorgehabt eine Art Configurator mit Hilfe von Template Meta Programmierung zu schreiben und dann darüber den Code zu erzeugen.</p>
<p>Soweit die grobe Idee dahinter.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669579</guid><dc:creator><![CDATA[mysterio]]></dc:creator><pubDate>Tue, 24 Feb 2009 19:01:30 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 19:23:05 GMT]]></title><description><![CDATA[<p>Gibt zwei Möglichkeiten, welche du sehr viel leichter anwenden könntest:<br />
1. Gib deinem <code>struct config</code> eine statische konstante Variable, welche definiert, ob etwas ausgeführt werden soll oder nicht. Diese statische Variable, kannst du dann direkt in der <code>Select</code> Struktur verwenden.<br />
2. Führe ein <code>ConfigTypeTraits</code> ein. Dort kannst du dann zum Beispiel diese Variable per Standard auf <code>false</code> setzen. Und für alle Klassen, welche doch so ein <code>typedef ... gw</code> haben, spezialisierst du <code>ConfigTypeTraits</code> und setzt den Wert auf <code>true</code> .<br />
2.1 Oder du setzt, falls der <code>typedef ... gw</code> als nicht vorhanden angenommen werden soll, das <code>gw</code> auf auf einen speziellen Typen, den du danach raussuchst. Zum Beispiel einen <code>NullType</code> . So haben alle Klassen ein <code>typedef ... gw</code> , nur bei gewissen ist er ganz sicher <code>typedef NullType gw</code> . Diese Spezialfälle lassen sich ganz einfach ermitteln.</p>
<p>@&quot;Womit lernt man derartige Templateprogrammierung? Buch?&quot;<br />
Wie drakon schon gesagt hat, ja über Bücher und über selber ausprobieren. Wenn man sich in den Grundlagen der Templates auskennt, dann kann ich Modern C++ Design wirklich nur wärmstens empfehlen. Was der Typ einem da präsentiert, ist der absolute Hammer. Das gibt einem einen ganz neuen Blickwinkel.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669588</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 24 Feb 2009 19:23:05 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Tue, 24 Feb 2009 21:51:26 GMT]]></title><description><![CDATA[<p>Also hier eine Version die geht mit...</p>
<p>g++ 4.3.0<br />
g++ 3.4.5 &lt;-- DAS hat mich überrascht<br />
Comeau Online 4.3.10.1 (strict=on)<br />
MSVC 8<br />
MSVC 9</p>
<p>...:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

template&lt;bool S, typename T1, typename T2&gt;
struct Select
{
	typedef T1 Result;
};

template&lt;typename T1, typename T2&gt;
struct Select&lt;false, T1, T2&gt;
{
	typedef T2 Result;
};

template&lt;int I&gt;
struct Int2Type
{
};

typedef char NoType;
class YesType { NoType dummy[2]; };

template&lt;typename T&gt;
struct Type
{
};

struct NoHelper
{
	NoType result;
};

template&lt;typename T&gt;
struct YesHelper
{
	YesType result;
};

NoHelper check_gw(...)
{
	return NoHelper();
}

template &lt;typename T&gt;
YesHelper&lt;typename T::gw&gt; check_gw(Type&lt;T&gt;)
{
	return YesHelper&lt;typename T::gw&gt;();
}

// --------------------------

struct StructWithGW
{
	typedef int gw;
};

struct StructWithNoGW
{
	typedef int blubb;
};

void foo(Int2Type&lt;true&gt;)
{
	std::cout &lt;&lt; &quot;has GW&quot; &lt;&lt; std::endl;
}

void foo(Int2Type&lt;false&gt;)
{
	std::cout &lt;&lt; &quot;has no GW&quot; &lt;&lt; std::endl;
}

// --------------------------

int main()
{
	bool const SEL_INT = sizeof(check_gw(Type&lt;int&gt;()).result) == sizeof(YesType);
	bool const SEL_STRUCT_WITH_GW = sizeof(check_gw(Type&lt;StructWithGW&gt;()).result) == sizeof(YesType);
	bool const SEL_STRUCT_WITH_NO_GW = sizeof(check_gw(Type&lt;StructWithNoGW&gt;()).result) == sizeof(YesType);

	foo(Select
		&lt;
		SEL_INT,
		Int2Type&lt;true&gt;,
		Int2Type&lt;false&gt;
		&gt;::Result());

	foo(Select
		&lt;
		SEL_STRUCT_WITH_GW,
		Int2Type&lt;true&gt;,
		Int2Type&lt;false&gt;
		&gt;::Result());

	foo(Select
		&lt;
		SEL_STRUCT_WITH_NO_GW,
		Int2Type&lt;true&gt;,
		Int2Type&lt;false&gt;
		&gt;::Result());

	std::cin.get();

	return 0;
}
</code></pre>
<p>MSVC 7.1 hab' ich nimmer drauf, und VC6 brauchen wir garnicht erst probieren (geht sicher nicht).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1669670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1669670</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 24 Feb 2009 21:51:26 GMT</pubDate></item><item><title><![CDATA[Reply to Wie kann man überprüfen ob ein Type definiert ist? on Thu, 26 Feb 2009 10:00:38 GMT]]></title><description><![CDATA[<p>Es funktioniert und Danke euch allen.</p>
<p>Grüße</p>
<p>PS: Sorry, dass ich mich so lange nicht gemeldet habe, aber ich war eine Weile ohne Netz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1670536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1670536</guid><dc:creator><![CDATA[mysterio]]></dc:creator><pubDate>Thu, 26 Feb 2009 10:00:38 GMT</pubDate></item></channel></rss>