C++ stream polymorphy on stack?

Я хотел бы сделать что-то вроде этого:

std::wistream input = std::wifstream(text);
if (!input) input = std::wistringstream(text);
// read from input

т.е. чтобы текст либо интерпретировался как имя файла, либо, если такого файла не существует, использовалось его содержимое вместо содержимого файла.

Конечно, я мог бы использовать std::wistream * input и затем new и delete для фактических потоков. Но тогда мне придется инкапсулировать все это в класс (конструктор и деструктор, т.е. надлежащий RAII для безопасности исключений).

Есть ли другой способ сделать это на стеке?

0
задан Felix Dombek 1 October 2011 в 18:04
поделиться