Можно ли использовать параметр шаблона константы нетипового типа в директиве препроцессора? Вот что я имею в виду:
template <int DING>
struct Foo
{
enum { DOO = DING };
};
template <typename T>
struct Blah
{
void DoIt()
{
#if (T::DOO & 0x010)
// some code here
#endif
}
};
Когда я пробую это с чем-то вроде Blah<Foo<0xFFFF>>
, VC++ 2010 жалуется на несовпадающие круглые скобки в строке, где мы пытаемся использовать #if
. Я предполагаю, что препроцессор на самом деле ничего не знает о шаблонах, и такие вещи просто не в его области. Что сказать?
Blah<Foo<0xFFFF>>
не будет анализироваться в текущем С++, вам нужен пробел между>
.Blah<Foo<0xFFFF> >
. - person KitsuneYMG   schedule 25.05.2010