Я хочу выяснить, как пройти манипулятор, как std::endl
к функции, а затем использовать переданный манипулятор в функции. Я могу объявить функцию следующим образом:
void f(std::ostream&(*pManip)(std::ostream&));
и я могу назвать это так:
f(std::endl);
Это все хорошо. Моя проблема выяснить, как использовать манипулятор внутри f
, Это не работает:
void f(std::ostream&(*pManip)(std::ostream&))
{
std::cout << (*pManip)(std::cout); // error
}
Независимо от компилятора, сообщение об ошибке сводится к тому, что компилятор не может выяснить, какой operator<<
звонить. Что мне нужно исправить внутри f
получить мой код для компиляции?
void f(std::ostream&(*pManip)(std::ostream&))
{
std::cout << "before endl" << (*pManip) << "after endl";
}
или же
void f(std::ostream&(*pManip)(std::ostream&))
{
std::cout << "before endl";
(*pManip)(std::cout);
std::cout << "after endl";
}
Других решений пока нет …