Is it possible to use a non-type constant template parameter in a preprocessor directive? Here's what I have in mind:
template <int DING>
struct Foo
{
    enum { DOO = DING };
};
template <typename T>
struct Blah
{
    void DoIt()
    {
        #if (T::DOO & 0x010)
        // some code here
        #endif
    }
};
When I try this with something like Blah<Foo<0xFFFF>>, VC++ 2010 complains something about unmatched parentheses in the line where we are trying to use "#if".  I am guessing the preprocessor doesn't really know anything about templates and this sort of thing just isn't in its domain.  What say?  Thanks!