Прежде всего, вы, вероятно, должны передать ссылку в поток, потому что в противном случае вам придется написать (*out)<<
, чтобы оператор вставки работал правильно (он работает на потоках, а не на указатель на потоки).
Но, что более важно, std::ios
- это только один из базовых классов потоков, а именно тот, который содержит члены классов ввода-вывода, которые не зависят от параметров шаблона.
Если вы хотите получить общий выходной поток, вы должны принять ссылку на std::ostream
(для потоков char
) или std::wostream
(для потоков wchar_t
); если вы хотите использовать универсальный шаблон, вы должны сделать свой шаблон функции для char_type
и char_traits
, чтобы разрешить все варианты std::basic_ostream class
(однако обратите внимание, что написание кода, независимого от типа символа, часто совсем не просто, и если вы не нужно, это может не стоить усилий - лучше использовать какую-то TCHAR
-подобную стратегию).
Итак, вероятно, что вы хотите:
F(std::ostream & out)
(для входных потоков это точно так же, но с std::istream
/ std::wistream
/ std::basic_istream
)