В проекте на С++ есть объявление функции:
void EXPORT AnimateUntilDead( void );
Другая (инлайновая) функция вызывает предыдущую:
SetThink(AnimateUntilDead);
В свою очередь SetThink это макрос:
#define SetThink( a ) ThinkSet( static_cast <void (CBaseEntity::*)(void)> (a), #a )
Который по идее дает
ThinkSet(static_cast <void (CBaseEntity::*)(void)> AnimateUntilDead, "AnimateUntilDead")
Тем не менее в Студии 2019 получаем ошибку:
Error C3867 'CSprite::AnimateUntilDead': non-standard syntax; use '&' to create a pointer to member
А в Студии 6.0 это компилится.
Пробовал добавлять & - не помогло:
SetThink(&AnimateUntilDead);
ThinkSet(
static_cast <void (CBaseEntity::*)(void)> (AnimateUntilDead),
"AnimateUntilDead"
);
и вызывать без макроса, напрямую, тоже.