ifstreambuf_iterator を使って構造体をバイナリファイルから順に読み出す方法があれば教えて頂けないでしょうか

たとえば

typedef struct _abc {
int i;
float x;
} ABC;

と言う構造体が連続してバイナリーデータとして書きこまれているファイルが
/home/Hoge/hoge_bin.dat にあると仮定します。


ifstream ifs( "/home/Hoge/hoge_bin.dat", ios::binary );
istreambuf_iterator<ABC> pABCend;
istreambuf_iterator<ABC> pABC(ifs);

while( pABC != pABCend ) {
cout << "(" << pABC->i << "," << pABC->x << ")" << endl;
pABC++;
}
(このコードはコンパイルエラーとなってしまいます)

のような使い方をしたいのですが、参考書を見ても istreambuf_iterator<char>での
例題しか載っていません。