Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Template - Erkennung eines integralen Typs

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.12.2004, 13:22 Uhr
(un)wissender
Niveauwart


Hallo!

Wie erkenne ich zur Compilezeit, ob der Typ T ein integraler Typ ist? Dann wäre noch interessant, ob dieser Type signed oder unsigned ist.
Ich bin mir sicher, dass das möglich ist, aber ich habe keinen Plan, wie das geht....
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.12.2004, 13:26 Uhr
~Master M.
Gast


HEY (UN)WISSENDER


MIT WELCHEN PROGP ROGRAMMIERST DU?



DICH MAL
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.12.2004, 13:36 Uhr
(un)wissender
Niveauwart



Was hat das mit dem Thema zu tun und ist bei dir eine bestimmte Taste blockiert?
Um die Frage trotzdem zu beantworten: meistens VC. NET 2003 und Dev-C++.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.12.2004, 13:37 Uhr
~Master M
Gast


denn kann ich dir nich helfen!!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.12.2004, 13:50 Uhr
(un)wissender
Niveauwart


@~Master M.
Ich glaube, ich dir auch nicht.

@all
Was sagt ihr dazu?


C++:
template <typename T>
struct isSignedPrimitive
{ static const bool value = false; };

template <>
struct isSignedPrimitive<int>
{ static const bool value = true; };

template <>
struct isSignedPrimitive<signed char>
{ static const bool value = true; };

template <>
struct isSignedPrimitive<signed short>
{ static const bool value = true; };

template <>
struct isSignedPrimitive<signed int>
{ static const bool value = true; };

template <>
struct isSignedPrimitive<float>
{ static const bool value = true; };

template <>
struct isSignedPrimitive<double>
{ static const bool value = true; };

//....
if(isSignedPrimitive<int>::value)
//....



Deckt das alles ab?


Bearbeitung:

Anregung habe ich von boost.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 12.12.2004 um 13:52 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.12.2004, 16:06 Uhr
Pablo
Supertux
(Operator)



Zitat von ~Master M:
denn kann ich dir nich helfen!!!


Und was hat der Compiler damit zu tun? Bist irgendwie komisch
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.12.2004, 17:26 Uhr
Tommix



Hallo,
wie wärs mit

C++:
#include <limits>

// ...

if (std::numeric_limits<int>::is_exact) /* ... */;
if (std::numeric_limits<int>::is_signed) /* ...*/;



Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.12.2004, 18:43 Uhr
(un)wissender
Niveauwart


Na geil!
Danke!
Das gibt es ja schon alles.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.12.2004, 18:52 Uhr
(un)wissender
Niveauwart


So, für alle die es interessiert:


C++:
if(std::numeric_limits<T>::is_signed ||
  !std::numeric_limits<T>::is_integer)
//...



Diese If-Abfrage wird nur ausgeführt, wenn T signed oder ein komplexer Datentyp ist.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: