Boost logo

Boost :

Subject: Re: [boost] [log] Release candidate 1
From: Stefan Strasser (strasser_at_[hidden])
Date: 2013-03-11 08:27:14

Am 11.03.2013 12:51, schrieb Andrey Semashev:
>> then it's an implemention detail, I'd suggest making all the functions of
>> logging::core static, or make logging::core a namespace.
>> if you wanna add the feature you've mentioned later on, you could for
>> example ask the user to construct and hold a core::log_during_termination
>> object, which - again as an implementation detail - holds a shared_ptr to
>> the internal core.
> This won't work because every static function would have to obtain the
> pointer to the core which may be invalidated because its global
> destructor has been invoked already.

I'm not suggesting any changes to the internals, only to the interface.
Maybe the following code makes it a little clearer:

class core{
     static void set_filter(){ get()->set_filter_impl(); }
     static shared_ptr<core> get();
     void set_filter_impl();
     friend class log_during_termination;

class log_during_termination{
     log_during_termination() : hold(core::get()){}
     shared_ptr<core> hold;

user code:

         //logging core is not destructed yet
     log::log_during_termination logterm;

static A a;

Best regards

Boost list run by bdawes at, gregod at, cpdaniel at, john at