J'ai un modèle que je voudrais compiler conditionnellement en fonction du type de l'argument. Je me soucie seulement de faire la différence entre "Plain Old Data" (POD), c.-à-d., Entiers, etc. ou classes/structures. J'utilise C++ VS2008 sur Windows. J'ai regardé la bibliothèque boost et je peux voir qu'ils semblent avoir ce que je veux. Cependant, je ne comprends pas ce que la syntaxe correcte pour l'instruction #if
serait.Compilation conditionnelle utilisant des caractères de type Boost
Toute aide serait appréciée.
Modifier --- Après avoir lu les réponses, je vois que j'oublié quelque chose dans ma définition de la question. La classe foo
est une classe modèle qui n'a besoin que d'une instance de la version de bar
qui est correcte pour class type T
. Je cherchais une solution qui peut être résolue à la compilation. J'espère que cela éclaircit mon problème.
Ce sera une erreur de compilation, une fois que le modèle de classe est instancié, 'T' est fixé, et à ce moment-là lorsque vous essayez d'appeler' bar' il verra les deux définitions et il échouera à compiler l'un d'eux. Notez que ce n'est pas SFINAE, car ce ne sera pas un échec de substitution - le type est fixé avant l'instanciation du membre (ou du moins je pense, je ne suis jamais sûr de ces choses :)). –