Tenho dificuldade em entender o parágrafo a seguir citado na cppreference sobre o construtor padrão trivial. Pesquisei stackoverflow, mas ainda não recebi uma resposta clara. Então por favor ajude.
Um construtor padrão trivial é um construtor que não executa nenhuma ação. Todos os tipos de dados compatíveis com a linguagem C (tipos POD) são trivialmente construtíveis por padrão. Diferente de C, no entanto, objetos com construtores padrão triviais não podem ser criados simplesmente reinterpretando o armazenamento alinhado adequadamente, como a memória alocada com std :: malloc: placement-new é necessária para introduzir formalmente um novo objeto e evitar possíveis comportamentos indefinidos.
Especificamente, se o construtor padrão trivial não faz nada, por que não podemos reinterpretar o armazenamento e fingir que há um objeto com o tipo especificado? Você poderia fornecer alguns exemplos para o possível comportamento indefinido que isso causaria?
*reinterpret_cast<float*>(&someNonFloatObject) = 0.1f;. O C ++ tem um conceito de objetos e vida útil do objeto, especificado na máquina abstrata, e apenas porque não há instruções da CPU para criar um objeto a partir do armazenamento não significa que não há diferença na máquina abstrata.