Функция seekg () не работает

Я пытаюсь написать простой код, который будет читать текстовый файл, но дважды читает первую строку. Я думал, что это будет так просто, как-то так

    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
    }

Однако поиск должен завершиться неудачей, так как первая строка не обрабатывается дважды. Есть идеи почему?

ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ: Это не проблема, с которой я столкнулся, а упрощенная версия, чтобы не вставлять код нескольких классов и несколько функций. Настоящая проблема заключается в том, что указатель файла передается нескольким функциям в нескольких классах. Первая функция может вызываться или не вызываться и читает первую строку файла. Вторая функция читает весь файл, но сначала должна вызвать seekg, чтобы убедиться, что мы находимся в начале файла.

Я просто использовал приведенный выше код, чтобы упростить обсуждение.

Ответы на вопрос(2)

Ваш ответ на вопрос