是否可以在预处理器指令中使用非类型常量模板参数?下面是我的想法:在预处理器指令中使用模板参数吗?
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
。我猜测预处理器并不知道任何关于模板的事情,而这种事情不在其领域内。说啥?
只是一个点要注意的:'胡说>'不会在当前的C解析++,你需要'>'s之间的空间。 'Blah >'。 –
KitsuneYMG
2010-05-25 12:30:59
实际上,在VC++ 2010中它编译! :)他们在VC++ 2010中部分实现了C++ 0x。 – Raj 2010-05-25 13:21:58