struct SomeClass {...};
struct Node
{
int m_i;
SomeClass m_Obj;
};
int main()
{
char* p = (char*)malloc(sizeof(Node));
Node* pNode = (Node*)p;
pNode->m_i = 1234;
new (pNode + sizeof(pNode->m_i)) SomeClass;
// ..
pNode->m_Obj.~SomeClass();
free(p);
}
Насколько переносим/корректен выделенный фрагмент при условии что расположение полей в Node меняется
не будет?
Замечание: сделать у Node конструктор и инициировать m_i и m_Obj через него не подходит, так как предполагается что Node — глупая структура и не умеет сама инициализировать свои поля.