Est-il possible d'utiliser un paramètre de modèle de constante non-type dans une directive de préprocesseur? Voici ce que je pense:Utilisez un paramètre de modèle dans une directive de préprocesseur?
template <int DING>
struct Foo
{
enum { DOO = DING };
};
template <typename T>
struct Blah
{
void DoIt()
{
#if (T::DOO & 0x010)
// some code here
#endif
}
};
Quand j'essayer avec quelque chose comme Blah<Foo<0xFFFF>>
, VC++ 2010 se plaint quelque chose entre parenthèses inégalés dans la ligne où nous essayons d'utiliser #if
. Je devine que le préprocesseur ne sait pas vraiment quoi que ce soit à propos des templates et ce genre de chose n'est tout simplement pas dans son domaine. Que dire?
Juste un point à noter: 'Blah>' n'analyser en c courant ++, vous avez besoin d'un espace entre les '>' s. 'Blah >'. –
KitsuneYMG
En fait, dans VC++ 2010, il compile! :) Ils ont partiellement implémenté C++ 0x dans VC++ 2010. – Raj