Boost logo

Boost :

Subject: Re: [boost] [system][filesystem v3] Question about error_code arguments
From: Scott McMurray (me22.ca+boost_at_[hidden])
Date: 2009-10-20 12:07:40


2009/10/20 Beman Dawes <bdawes_at_[hidden]>:
>
> Regardless, I'd like to hear Boosters views on the two interfaces
> above. Which do you prefer? Why?
>

Since it's neither polymorphic nor ownership-transferring, I really
dislike the pointer version.

Now, I have no idea how error_code is specified, but I thought it
would have been something like this, which wouldn't require null
references:

struct error_code {
    static const int throw_instead = ~0;
    error_code(int c = 0) : code_(c) {}
    int code() const { return code_; }
    error_code &operator=(int c) {
        if (code_ == throw_instead) throw system_exception(c);
        code_ = c;
        return *this;
    }
  private:
    int code_;
};

error_code throws_object(error_code::throw_instead);
error_code &throws() { return throws_object; }

That said, I'd much prefer the pointer version to anything that
requires that implementation code check whether the address of a
reference is null, despite my distaste at having to pass &error all
over the place.

~ Scott


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