The rest of that blurb is an "I know I'm wrong but I'm not admitting it" answer if ever I saw one. There are multiple problems with that solution:
In the best case any content buffering that's taken place at fstream level has to be purged and reloaded, in the worst case any OS cache will be too.
The function now has to take an extra piece of data (the file name) that has nothing to do with its actual purpose
You have to turn your relative path into an absolute one or institute synchronization on the current directory mechanism to ensure you continue opening the same file
Your function now has to take an fstream parameter directly rather than a base (i|o)stream making it *less* flexible.