我有以下代码(为简单起见,省略了部分代码)
标题:
class DbgModuleMarker
{
public:
DbgModuleMarker( std::string name );
static std::ostream createStream( const DbgModuleMarker& marker );
std::ostream& operator()() const;
};
extern DbgModuleMarker PHYSICS;
资源:
std::ostream& DbgModuleMarker::operator()() const
{
static std::ostream os = createStream( *this );
return os;
}
此代码的目标是允许operator()
按如下方式使用
debug_modules::PHYSICS() << "Foo" << endl;
我真的不知道以这种方式调用函数时静态的行为如何。
我希望该函数createStream
只会被调用一次(或者如果从未调用过,operator()
则永远不会被调用
我想知道我所期望的行为是否会发生,如果这是一个可能的想法,或者我正在做一些非常错误的事情而没有注意到它。
对线程安全和异常安全有什么影响?
(考虑创建的流本身是线程安全的,因为 std::ostream 的线程安全不是我关心的问题)