外部ツールを使用するログ ライブラリを作成しようとしています。
ライブラリをより自然に使用できるようにするために、cout が使用されている名前空間を検出できるようにしたいと考えています。
具体的には、結果は次のように使用する必要があります
namespace A
{
void foo()
{
cout << "Something went very wrong" << endl;
}
}
namespace B
{
void bar()
{
cout << "C should equal 3" << endl;
}
}
int main()
{
B::bar();
A::foo();
}
結果の出力は次のようになります
MODULE::B : C should equal 3
MODULE::A : Something went very wrong
私はすでにstd::streambuf
特定のキーワードを cout の出力に追加するために使用しています。必要なのは、どの名前空間でどの streambuf を使用するかを指定することだけです。
どうすればこれを達成できますか?
また、私が作成しているライブラリは、using namespace
宣言を多用する複数の名前空間を持つプロジェクトに統合される予定です。これらの宣言を削除する必要のない解決策が必要です。
edit1:どの名前空間がどの文字列に関連付けられているかを手動で指定したり、使用されている名前空間にオブジェクトを追加したりする必要はありません (std
もちろん例外)