Tenho uma construção semelhante ao CRTP:
class Derived : public Base<Derived>
Preciso calcular um ponteiro para um Derived
objeto a partir de um ponteiro para Base<Derived>
objeto via reinterpret_cast
. Não posso usar dynamic_cast
porque não estou usando funções virtuais aqui.
Os tipos são fornecidos, eu tenho o ponteiro para o Base<Derived>
objeto. Preciso do deslocamento de bytes entre os dois tipos, para poder usar reinterpret_cast
. Como faço isso (sem comportamento indefinido)? É possível fazer em tempo de compilação / salvar como uma static constexpr
variável (estou usando C++20)?