是否可以在預處理器指令中使用非類型常量模板參數?下面是我的想法:在預處理器指令中使用模板參數嗎?
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