У меня проблема при составлении следующего фрагмента кода при использовании GNU г ++ 4.9.2 (используется для компиляции ОК в г ++ 2.95.3)Перегрузки вопрос епсИ компиляции в GNU г ++ 4.9.2
XOStream &operator<<(ostream &(*f)(ostream &)) {
if(f == std::endl) {
*this << "\n" << flush;
}
else {
ostr << f;
}
return(*this);
}
Ошибка такова, как показано ниже:
error: assuming cast to type 'std::basic_ostream<char>& (*)(std::basic_ostream<char>&)' from overloaded function [-fpermissive]
[exec] if(f == std::endl) {
[exec] ^
Пожалуйста, помогите.
Примечание: Для того, чтобы избежать запуска в такого рода проблемы, вы можете написать XOStreamBuffer и присоедините его к XOStream (практически без изменений) –
Итак, почему вы не просто позволяете 'endl' делать свою работу? Потому что вы хотите перехватить 'flush' на уровне' XOStream', а не на уровне 'ostr'? Вы также можете упростить 'else', чтобы' return f (ostr); 'непосредственно ... Я предполагаю, что если он тоже делает подобный взлом, это не сработает. – Yakk