ifstream seekg beyond end não retorna eof no VS 2008 Express?

No VS 2005, eu tenho algum código que se parece com isso:

ifs.open("foo");
while (!ifs.eof())
{
    ifs.read(&bar,sizeof(bar));
    loc = ifs.tellg();
    loc += bar.dwHeaderSize;
    // four byte boundary padding
    if ((loc % 4) != 0)
        loc += 4 - (loc % 4);
    ifs.seekg(loc,ios::beg);
}
ifs.close();

O código funcionou bem no VS 2005, mas ele falha no VS 2008 Express. Pelo que eu posso dizer, o VS 2008 não está retornando eof () após o código buscar o final do arquivo. Estou esquecendo de algo? Eu corrigi-lo adicionando uma verificação explícita para ver se o local de busca excedeu o tamanho do arquivo, mas quero ter certeza de que entendi ifstream corretamente.

questionAnswers(1)

yourAnswerToTheQuestion