From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2004-03-28 10:40:21
On Sat, 27 Mar 2004 19:23:50 -0500, David Abrahams
>"Klaus Nowikow" <nowikow_at_[hidden]> writes:
>> Reece Dunn wrote:
>>> A trick I use when handling HRESULT error codes is to have a
>>> class like this
>>> (adapted for int error type):
>>> class errorcheck
>>> inline errorcheck( int ec ): error( ec )
>>> if( ec < 0 ) throw( *this );
>> Careful. Throwing an exception from a constructor
>> means that the object won't be constructed (i. e., does not exist).
>> So you are throwing a non-existing object here.
>> Or am I wrong?
>You're wrong. *this is copied before it is thrown. Still, the idiom
>above seems a bit suspicious, unless you somehow prevent derivation
I can't believe you are justifying the above. You copy an object that
doesn't exist yet! (The class is not a POD and has a non trivial
constructor - and even if this wasn't the case...)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk