Можно ли использовать параметр шаблона константы без типа в директиве препроцессора? Вот что я имею в виду:Использовать параметр шаблона в директиве препроцессора?
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++, вам нужно пространство между '>' ы. 'Blah >'. –
KitsuneYMG
Собственно, в VC++ 2010 он компилируется! :) Они частично реализовали C++ 0x в VC++ 2010. – Raj