Perché le classi std :: fstream non prendono una stringa std ::?

Questa non è una domanda di design, davvero, anche se può sembrare così. (Bene, va bene, è una specie di domanda di design). Quello che mi chiedo è il motivo per cui le classi std::fstream C ++ non prendono una std::string nel loro costruttore o metodi aperti. Tutti amano gli esempi di codice quindi:

 #include  #include  #include  int main() { std::string filename = "testfile"; std::ifstream fin; fin.open(filename.c_str()); // Works just fine. fin.close(); //fin.open(filename); // Error: no such method. //fin.close(); } 

Questo mi porta sempre a lavorare con i file. Sicuramente la libreria C ++ userebbe std::string ovunque ansible?