To be precise, eofbit won't cause tellg() to return -1. But the fact that you read past EOF sets the failbit, and tellg() will return -1 if badbit or failbit are set.
The solution is to clear the status flags before calling tellg():
iss.clear();
iss.tellg(); // should work