these take a pointer to a function.
oct itself is declared as inline ios_base& oct(ios_base& _Iosbase){ /*...*/ }
google function pointers if you want to know more.
It would mean that every time a new manipulator was created, class ostream& would have to be augmented
with another overload for the new manipulator, which would effectively prevent anyone other than the
writers of the C++ I/O streams library from writing a custom manipulator.
huh? no.struct manipulator{ virtual ostream& manipulate(ostream&); }; then of course << would have to take manipulator*, but I assume teguh123 just made a mistake about that.
And even if you didn't use polymorphism, you could still overload the << operator.