O que deve acontecer com a negação de um size_t (ou seja, `-sizeof (struct foo)`))?

Estou lidando com algum código no trabalho que inclui uma expressão do formulário

-(sizeof(struct foo))

ou seja, a negação de umsize_te não estou claro sobre o que os padrões C e C ++ exigem dos compiladores quando eles vêem isso. Especificamente, olhando por aqui e em outros lugares,sizeof retorna um valor integral não assinado do tiposize_t. Não consigo encontrar nenhuma referência clara para o comportamento especificado ao negar um inteiro não assinado. Existe algum, e se sim, o que é isso?

Edit: Ok, então existem algumas boas respostas sobre aritmética em tipos não assinados, mas não está claro que isso é de fato tal. Quando isso nega, ele está operando em um inteiro não assinado, ou convertendo para um tipo assinado e fazendo algo com isso? É o comportamento esperado dos padrões "imagine que é o número negativo de magnitude semelhante e, em seguida, aplique as regras de 'estouro' para valores não assinados"?

questionAnswers(6)

yourAnswerToTheQuestion