Transmissão adequada para funções de membro de leitura e gravação fstream
Embora tenha havido muitas linhas escritas sobre o tópico reinterpret_cast, e quão ruim é, ainda estou intrigado com a melhor maneira de evitá-lo, especialmente ao lidar com funções como leitura e gravação do fstream. Então, aqui está o meu dilema ...
Digamos que temos uma matriz inteira que queremos preencher com alguns dados de um arquivo.
std::ifstream iFile( ... );
// presume that the type of this array is not a matter of choice
int *a = new int[ 100 ];
Podemos ler com alguns modelos diferentes:
iFile.read( (char *)a, sizeof( int ) * 100 );
iFile.read( reinterpret_cast< char * >( a ), sizeof( int ) * 100 );
iFile.read( static_cast< char * >( static_cast< void * >( ( a ) ), sizeof( int ) * 100 );
O primeiro (estilo C) está desatualizado e o novo estilo é introduzido no C ++ por boas razões. O segundo não é portável e não oferece garantias. O terceiro é tedioso para escrever e estraga a diversão.
Existe alguma alternativa para isso e como devo proceder?
EDITAR:
O objetivo é obter o código o mais portátil e em conformidade com o padrão possível.