Boost logo

Boost :

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
<dave_at_[hidden]> wrote:

>"Klaus Nowikow" <nowikow_at_[hidden]> writes:
>> Reece Dunn wrote:
>> [snip]
>>> A trick I use when handling HRESULT error codes is to have a
>>> class like this
>>> (adapted for int error type):
>>> class errorcheck
>>> {
>> [snip]
>>> public:
>>> 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
>from errorcheck.

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, gregod at, cpdaniel at, john at