Boost logo

Boost :

From: Anthony Williams (anthony_w.geo_at_[hidden])
Date: 2005-09-08 16:47:10


Alexander Terekhov <terekhov_at_[hidden]> writes:

> Anthony Williams wrote:
>> However, our once_flag can store a result of a user-defined type, which may
>> therefore require proper destruction, so that it can notify other processes,
>> send network packets, write to a file, or whatever; this therefore needs
>> dealing with somehow before process termination.
>
> User would then call _destroy() or _reset() (the later is likely
> to be called multiple times). I won't tell you "how". Trade secret.

Don't be such a tease!

class X
{
public
    X()
    {
        acquire_resource();
    }
    void do_something();
    ~X()
    {
        release_resource();
    }
};

X get_X();

void f()
{
    static once_flag once;
    call_once(get_X,once).do_something();
    // how do we clean up the X associated with "once", and release it's
    // resource?
    // We can't sensibly call once_destroy() here.
}

Anthony

-- 
Anthony Williams
Software Developer
Just Software Solutions Ltd
http://www.justsoftwaresolutions.co.uk

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk