É seguro reinterpretar um inteiro para flutuar?

Nota: eu perguntei erroneamente sobrestatic_cast originalmente; é por isso que a principal resposta mencionastatic_cast no início.

Eu tenho alguns arquivos binários com valores de float little endian. Eu quero lê-los de maneira independente de máquina. Minhas rotinas de troca de bytes (do SDL) operam em tipos inteiros sem sinal.

É seguro simplesmente lançar entre ints e floats?

float read_float() {
    // Read in 4 bytes.
    Uint32 val;
    fread( &val, 4, 1, fp );
    // Swap the bytes to little-endian if necessary.
    val = SDL_SwapLE32(val);
    // Return as a float
    return reinterpret_cast<float &>( val );  //XXX Is this safe?
}

Eu quero que este software seja o mais portátil possível.

questionAnswers(2)

yourAnswerToTheQuestion