Does anyone know why the following works:
Code:
class Test
{
public:
void Set(int) {}
int Get() {}
Test(): m_Test(this) {};
Stuff::CUtilityMember<int, Test, int, &Test::Get, &Test::Set> m_Test;
};
But not the following:
Code:
class Test
{
public:
void Set(int) {}
int Get() {}
Test(): m_Test(this) {};
Stuff::CUtilityMember<int, Test, int, NULL, NULL> m_Test;
};
?
CUtilityMember looks like:
Code:
#define Template template \
< \
typename Type, typename Class, typename ReturnType, \
/*typename*/ /*ParamPolicy<ReturnType>::Type*/int (Class::* GetFunction)(), \
void (Class::* SetFunction)(/*typename ParamPolicy<Type>::Type*/int NewData) \
>
Error 3 error C2975: 'GetFunction' : invalid template argument for 'Stuff::CUtilityMember', expected compile-time constant expression g:\w00t\visual studio 2008\projects\stuff\utilitymember.h 65
Error 4 error C2975: 'SetFunction' : invalid template argument for 'Stuff::CUtilityMember', expected compile-time constant expression g:\w00t\visual studio 2008\projects\stuff\utilitymember.h 65