c ++: Como obter contexto quando o callback não fornece user arg?

Primeiro, alguns antecedentes:
(Nota: Embora eu esteja em uma região não-.NET Win32, esta é realmente uma questão em C ++)

Estou usando uma API de terceiros que exige que você registre uma função de retorno de chamada para saber quando uma operação assíncrona é concluída. Tenho que usar o retorno de chamada, não há maneira de contornar isso.

Uma implementação não OOP seria algo assim:

void __stdcall MyCbFcn(int value)
{
   do something with 'value'...
}

API_RegisterCallback(MyCbFcn);

Coisas bastante padrão.

MAS...
Meu código é OOP, com várias instâncias rx'em o retorno de chamada, portanto, o retorno de chamada precisa ser roteado para o objeto que registrou.

Sabendo que as pessoas fazem isso, os retornos de chamada geralmente incluem um usuário var, algo como:

void __stdcall MyCbFcn(int value, U32 user)
{
   do something with 'value'...
}

API_RegisterCallback(MyCbFcn, someUserValue);

e, mais especificamente, quando combinado com o OOP, esse argumento de usuário permite que você retorne ao contexto:
(escrito inline por brevidade):

class MyClass
{
public:
   MyClass()
   {
      API_RegisterCallback(MyClass::StaticCbFcn, (U32)this);
   }

private:
   static void __stdcall StaticCbFcn(int value, U32 user)
   {
      MyClass* pThis = (MyClass*)user;
      pThis->InstanceCbFcn(value);
   }
   void InstanceCbFcn(int value)
   {
      ... do some work in context ...
   }
}

MAS, minha API não possui um user arg :(

Então agora minha pergunta:
Como eu posso voltar ao contexto?

Eu considerei coisas meio modestas como definir um "pool" de 100 callbacks distintos e atribuí-los como objetos são criados, mas isso parece um hack real.

Uma solução óbvia ... se eu estivesse em, e. JavaScript :) ... seria usar uma função anônima, mas o AFAIK C ++ não tem nada disso.

Qualquer idéia seria apreciada.

questionAnswers(1)

yourAnswerToTheQuestion