Стандартный способ найти базовый адрес структуры от члена

struct Data {
    int a;
    std::string b;
    float c;
};

std::string* allocateDataAndGetString() {
    Data* dataPtr(someAllocator.allocate<Data>());
    return &dataPtr.b;
}

Data* getBaseDataPtrFromString(std::string* mStringMember) {
    // ???
}

int main() {
    std::string* stringPtr(allocateDataAndGetString());
    Data* dataPtr(getBaseDataPtrFromString
}

у меня естьData экземпляр, выделенный в куче, и указатель на егоstd::string b; член. Как мне получить базовый адресData Например, является ли строка строкой стандартным образом с учетом смещений и отступов?

Я пытался вычестьsizeof(int) а такжеstd::offsetof(Data, std::string) отstd::string* указатель, но я не мог заставить его работать.

Ответы на вопрос(4)

Ваш ответ на вопрос