我正在尝试编写一个使用外部工具的日志库
为了使库更自然地使用,我希望能够检测使用 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
声明。我需要一个不需要删除这些声明的解决方案。
编辑1:我不关心必须手动指定哪个名称空间与哪个字符串相关联或将对象添加到任何使用的名称空间(std
当然除外)