Obter ponteiro para objeto do ponteiro para algum membro
Suponha que exista uma estrutura
struct Thing {
int a;
bool b;
};
e eu recebo um ponteiro para membrob
dessa estrutura, digamos como parâmetro de alguma função:
void some_function (bool * ptr) {
Thing * thing = /* ?? */;
}
Como obtenho um ponteiro para o objeto que contém? Mais importante: sem violar alguma regra do padrão, ou seja, desejo um comportamento definido padrão, não indefinido nem comportamento definido de implementação.
Como nota lateral: eu sei que isso contorna o tipo de segurança.