Most IO stream manipulators are regular functions with the following signature:
std::ios_base& func( std::ios_base& str );
However
Because basic_ostream has a templated overload of operator<< that expects just such a function pointer:
basic_ostream
operator<<
basic_ostream& operator<<(basic_ios& (*pf)(basic_ios&));