Как передать std :: endl в функцию и использовать ее?

Я хочу выяснить, как пройти манипулятор, как 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 получить мой код для компиляции?

1

Решение

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";
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]