Funkcja seekg () kończy się niepowodzeniem

Próbuję napisać prosty kod, który odczyta plik tekstowy, ale dwukrotnie odczyta pierwszą linię. Myślałem, że to będzie tak proste, jak coś takiego

    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
    }

Jednak seekg musi zawieść, ponieważ pierwsza linia nie jest przetwarzana dwukrotnie. Jakiś pomysł dlaczego?

UWAGA: To nie jest problem, z którym się borykam, ale jego uproszczona wersja, aby nie trzeba było wklejać kodu wielu klas i wielu funkcji. Prawdziwy problem polega na przekazywaniu wskaźnika pliku do wielu funkcji w wielu klasach. Pierwsza funkcja może, ale nie musi, zostać wywołana i wczyta pierwszą linię pliku. Druga funkcja odczytuje cały plik, ale najpierw musi wywołać seekg, aby upewnić się, że jesteśmy na początku pliku.

Właśnie użyłem powyższego kodu, aby uprościć dyskusję.

questionAnswers(2)

yourAnswerToTheQuestion