Есть функция, которая получает std :: ostream & в качестве аргументов и выполняет некоторые операции:
inline std::ostream& my_function(std::ostream& os, int n) {
// some operations
return os;
}
И есть другая функция, которая вызывает my_function
:
void caller_function(int n) {
std::ostringstream ostsr;
ostsr << my_function(ostsr, n);
}
Компилятор Visual Studio 2015 сообщает об ошибке:
error C2679: binary '<<' : no operator found which takes a left-hand operand of type 'std::basic_ostream<char, std::char_traits<char>>'
std :: ostringstreamm имеет унаследованный и перегруженный operator<<
, который принимает функцию манипулятора для этого случая, тогда как функция манипулятора my_function
перегруженный оператор <<:</p>
ostream& operator<< (ostream& (*pf)(ostream&));
Так в чем же проблема и как ее исправить?