Получите std :: ostream из std :: cout или std :: ofstream (файл)

как мне связатьstd::ostream либоstd::cout или кstd::ofstream объект, в зависимости от определенного условия программы? Хотя это неверно по многим причинам, я хотел бы достичь чего-то, что семантически эквивалентно следующему:

std::ostream out = condition ? &std::cout : std::ofstream(filename);

Я видел несколько примеров, которые не являются безопасными для исключения, например, один изhttp://www2.roguewave.com/support/docs/sourcepro/edition9/html/stdlibug/34-2.html:

int main(int argc, char *argv[])
{
  std::ostream* fp;                                           //1
  if (argc > 1)
     fp = new std::ofstream(argv[1]);                         //2
  else
     fp = &std::cout                                          //3

  *fp << "Hello world!" << std::endl;                         //4
  if (fp!=&std::cout) 
     delete fp;
}

Кто-нибудь знает лучшее, исключительное решение?

Ответы на вопрос(4)

Ваш ответ на вопрос