Dois-je fermer manuellement un ifstream?

Je dois manuellement appel close() lorsque j'utilise un std::ifstream?

Par exemple, dans le code:

std::string readContentsOfFile(std::string fileName) {

  std::ifstream file(fileName.c_str());

  if (file.good()) {
      std::stringstream buffer;
      buffer << file.rdbuf();
      file.close();

      return buffer.str();
  }
  throw std::runtime_exception("file not found");
}

Dois-je appeler file.close() manuellement? Ne devrait pas ifstream faire usage de RAII pour la fermeture des fichiers?