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.

questionAnswers(4)

yourAnswerToTheQuestion