Por que não consigo inicializar uma referência para `ofstream` /` ifstream`, com uma instância de `fstream`?

INTRODUÇÃO
void  read_foo (std::ifstream& out);
void write_foo (std::ofstream& out);

Eu tenho essas duas funções em que uma deve ler um arquivo e a outra deve gravar em um.

Tudo funciona com os trechos abaixo;

std::ifstream ifs ("filename.txt");
read_foo  (ifs);

std::ofstream ofs ("filename.txt");
write_foo (ofs);
O PROBLEMA

No entanto, se eu tentar usar umstd::fstream, para que eu possa chamar as duas funções com o mesmo fluxo, ele não é compilado e o compilador gera muitas mensagens de erro.

Por que não consigo vincular umfstream para umifstream&ouofstream&?foo.cpp
#include <fstream>

void  read_foo (std::ifstream& out);
void write_foo (std::ofstream& out);

int main () {
  std::fstream fs ("filename.txt");

   read_foo (fs);
  write_foo (fs);
}
Erro (s):

<br>foo.cpp: In function ‘int main()’:<br>foo.cpp:9:16: error: invalid initialization of reference of type ‘std::ifstream& {aka std::basic_ifstream<char>&}’ from expression of type ‘std::fstream {aka std::basic_fstream<char>}’ read_foo (fs);<br>^<br>foo.cpp:3:7: note: in passing argument 1 of ‘void read_foo(std::ifstream&)’ void read_foo (std::ifstream& out);

<br>foo.cpp:10:16: error: invalid initialization of reference of type ‘std::ofstream& {aka std::basic_ofstream<char>&}’ from expression of type ‘std::fstream {aka std::basic_fstream<char>}’<br>write_foo (fs);<br>^<br>foo.cpp:4:6: note: in passing argument 1 of ‘void write_foo(std::ofstream&)’ void write_foo (std::ofstream& out);

questionAnswers(1)

yourAnswerToTheQuestion