È possibile utilizzare un parametro di modello costante non di tipo in una direttiva di preprocessore? Ecco quello che ho in mente:Utilizzare un parametro di modello in una direttiva del preprocessore?
template <int DING>
struct Foo
{
enum { DOO = DING };
};
template <typename T>
struct Blah
{
void DoIt()
{
#if (T::DOO & 0x010)
// some code here
#endif
}
};
Quando provo questo con qualcosa di simile Blah<Foo<0xFFFF>>
, VC++ 2010 lamenta qualcosa su di parentesi senza eguali nella linea in cui stiamo cercando di utilizzare #if
. Immagino che il preprocessore non sappia nulla dei template e questo genere di cose non è nel suo dominio. Cosa dire?
Solo un punto da notare: 'Blah>' non analizzerà in corrente C++, è necessario uno spazio tra i> 's'. 'Blah >'. –
KitsuneYMG
In realtà, in VC++ 2010 viene compilato! :) Hanno parzialmente implementato C++ 0x in VC++ 2010. – Raj