função seekg () falha

Eu estou tentando escrever algum código simples que irá ler um arquivo de texto, mas lê a primeira linha duas vezes. Eu pensei que isso seria tão simples como algo assim

    std::ifstream file;
    file.open("filename", std::ios_base::in);
    std::string line;
    std::getline(file, line);
    // process line
    file.seekg(0, ios::beg);

    while (std::getline(file, line))
    {
        // process line
    }

No entanto, o seekg deve falhar, pois a primeira linha não é processada duas vezes. Alguma ideia do porquê?

ATENÇÃO: Este não é o problema que eu estou enfrentando, mas uma versão simplificada do mesmo, para não ter que colar várias classes de código e múltiplas funções. O problema real envolve um ponteiro de arquivo sendo passado para várias funções em várias classes. A primeira função pode ou não ser chamada e lê a primeira linha do arquivo. A segunda função lê todo o arquivo, mas deve primeiro chamar seekg para garantir que estamos no início do arquivo.

Acabei de usar o código acima para simplificar a discussão.

questionAnswers(2)

yourAnswerToTheQuestion