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
コードをコンパイルするには、内部で何を修正する必要がありますか?