是否可以在预处理指令中使用非类型常量模板参数?以下是我的想法:
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> >
。 - KitsuneYMG