template IF

template IF - C++ - Programmation

Marsh Posté le 07-01-2004 à 17:05:51    

en m'inspirant du code :
 

Code :
  1. template <bool c, typename TRUE, typename FALSE>
  2.   struct IF;
  3.  
  4.   template <typename TRUE, typename FALSE>
  5.   struct IF <true, TRUE, FALSE>
  6.   {
  7.       typedef TRUE RESULT;
  8.   };
  9.  
  10.   template <typename TRUE, typename FALSE>
  11.   struct IF <false, TRUE, FALSE>
  12.   {
  13.       typedef FALSE RESULT;
  14.   };


 
je voudrais créer un template qui a une classe de base si la condition est vrai, mais PAS de classe de base si la condition est fausse. Est-ce possible ou dois-je déclarer une classe vide
comme par exemple :
 

Code :
  1. template <bool c, typename TRUE>
  2.   struct IF;
  3.  
  4.   template <typename TRUE>
  5.   struct IF <true, TRUE>
  6.   {
  7.       typedef TRUE RESULT;
  8.   };
  9.  
  10.   template <typename TRUE>
  11.   struct IF <false, TRUE>
  12.   {
  13.       class vide{};
  14.       typedef vide RESULT;
  15.   };


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 07-01-2004 à 17:05:51   

Reply

Marsh Posté le 07-01-2004 à 17:15:18    

oui, mais c'est là meme chose que
 
IF<cond, Foo, Empty>::RESULT

Reply

Marsh Posté le 07-01-2004 à 17:40:13    

Empty existe dans un header ou on doit la déclarer ?


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 07-01-2004 à 17:44:41    

non tu le déclares toi même

Reply

Marsh Posté le 07-01-2004 à 19:45:38    

merci :jap:
 
pour info, vc++7 ne supporte apparement pas cette syntaxe.
 
pour une alternative, cf les commentaires à l'article de JoelF sur la métaprogrammation template : http://forum.hardware.fr/forum2.ph [...] subcat=386


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 07-01-2004 à 19:47:21    

VC++ ne supporte pas grand chose. et ce non respect du standard t'oblige à tout coder explicitement, ce qui est beaucoup plus volumineux

Reply

Marsh Posté le 07-01-2004 à 20:44:28    

oui mais il est """relativement""" simple d'utilisation, une ide et un debogueur pratique, du moins je trouve ... ceci dit il est vrai que le compilo en lui meme n'est pas top, bien qu'il me semble qu'il y ait eu un pas en avant vers le standard entre vc++6 et 7


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 07-01-2004 à 20:55:23    

mais comme C++0x pourrait bien devenir C++04, je crois que ça sera peine perdue ...

Reply

Marsh Posté le 08-01-2004 à 11:38:52    

Essaye le compilo Intel, il a meilleur réputation et s'intègre à VS


Message édité par cricri_ le 08-01-2004 à 11:39:36
Reply

Marsh Posté le 09-01-2004 à 18:56:16    

je viens d'essayer, apparement ou bien j'ai pas tout compris comment l'installer et c'est toujours vc++ qui compile, ou bien ca passe pas non plus.
 
edit : ah non pardon, c'etait toujours vc++ ...
 
quand je veux convertir mon projet pour intel compilo il me dit : Erreur non spécifiée ...


Message édité par blackgoddess le 09-01-2004 à 18:58:49

---------------
-( BlackGoddess )-
Reply

Marsh Posté le 09-01-2004 à 18:56:16   

Reply

Marsh Posté le 10-01-2004 à 10:10:58    

??? y a rien à convertir !
Je ne l'ai pas sous la main mais dans un menu genre outil tu as un item choix du compilo ou un truc dans ce genre, et tu sélectionne intel

Reply

Marsh Posté le 11-01-2004 à 01:03:52    

bin ?!? je trouve pas :(
dans outils/options, j'ai les paramètres du compilo intel, mais j'ai pas le choix du compilo (j'ai vc++.net 2002)


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 20-01-2004 à 09:34:45    

Désolé pour le délai ...
Suis avec VS 6, c'est dans le menu Outil mais pas dans Options, et là j'ai :
Intel C++ compiler Selection Tool, puis suffit de cocher la case en haut à gauche pour utiliser ou pas le compilo Intel, et choisir la version à droite si tu en as plusieurs.
ça devrait être sensiblement pareil sous .NET je pense ?

Reply

Marsh Posté le 20-01-2004 à 09:51:39    

le clickodrome :pfff:

Reply

Marsh Posté le 20-01-2004 à 09:57:42    

Il parait qu'il y a une variable à definir pour automatiser ça directement dans le code, mais je n'ai pas réussi moi sous visual ...

Reply

Marsh Posté le 20-01-2004 à 09:59:39    

c'est pire. ils peuvent faire comme tout le monde chez MS ?
 
export CC=bordel-cc et roulaiz

Reply

Marsh Posté le 20-01-2004 à 10:15:00    

export CC=g77
 
--->[]

Reply

Marsh Posté le 20-01-2004 à 12:14:46    

j'ai le 7, v me dépecher de regarder ca ce soir parce que la version d'evaluation va s'arreter le 7 :(


---------------
-( BlackGoddess )-
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed