Carregar arquivo binário usando o fstream

Estou tentando carregar o arquivo binário usandofstream Da seguinte maneira:

#include <iostream>
#include <fstream>
#include <iterator>
#include <vector>

using namespace std;

int main()
{
    basic_fstream<uint32_t> file( "somefile.dat", ios::in|ios::binary );

    vector<uint32_t> buffer;
    buffer.assign( istream_iterator<uint32_t, uint32_t>( file ), istream_iterator<uint32_t, uint32_t>() );

    cout << buffer.size() << endl;

    return 0;
}

Mas isso não funciona. No Ubuntu ele caiu comstd::bad_cast exceção. No MSVC ++ 2008, apenas imprime 0.

Eu sei que eu poderia usarfile.read para carregar o arquivo, mas eu quero usar iterador eoperator>> para carregar partes do arquivo. Isso é possível?Por quê o código acima não funciona?

questionAnswers(4)

yourAnswerToTheQuestion