¿Es posible utilizar un parámetro de plantilla constante sin tipo en una directiva de preprocesador? Aquí es lo que tengo en mente:¿Usa un parámetro de plantilla en una directiva de preprocesador?
template <int DING>
struct Foo
{
enum { DOO = DING };
};
template <typename T>
struct Blah
{
void DoIt()
{
#if (T::DOO & 0x010)
// some code here
#endif
}
};
Cuando intento esto con algo como Blah<Foo<0xFFFF>>
, VC++ 2010 se queja de algo acerca de paréntesis, sin igual en la línea en la que estamos tratando de utilizar #if
. Supongo que el preprocesador realmente no sabe nada sobre plantillas y este tipo de cosas simplemente no está en su dominio. ¿Que dice?
Sólo un punto a destacar: 'Bla>' no va a analizar en c actual ++, se necesita un espacio entre los '>' s. 'Blah >'. –
KitsuneYMG
¡En realidad, en VC++ 2010 compila! :) Han implementado parcialmente C++ 0x en VC++ 2010. – Raj