Boost logo

Boost :

From: Dean Michael Berris (mikhailberis_at_[hidden])
Date: 2006-07-10 05:00:41


On 7/9/06, Daryle Walker <darylew_at_[hidden]> wrote:
> >
> > exception_info & info (get_exception_info(e));
> > info ++; // won't work, unless operator++ is defined for exception_info
>
> As another poster said, you can take the address of "info" and then repeat
> the same stupid pointer tricks. The programmer's advice, "guard against
> Murphy, not Machiavelli," applies here. Your pointer flaw isn't because of
> this library's API, it's a general problem in C++. That's because all
> pointers define the ++ and -- operators for use with array segments,
> ignoring the fact that a pointer can be indistinctively used for single
> objects. In other words: "if you see this code, fire the programmer".
>

That's why I would like to use references -- because if the user of
the library _still_ got the address, then he _had_ to get the address
and put it in a pointer to do something potentially stupid with it.
That's just preventing the regular user from making a mistake by
side-stepping pointers in the API itself.

And I agree -- if the programmer _still_ did the stupid
&get_exception_info() and did a ++ on the pointer, then maybe that
programmer should get fired. ;)

-- 
Dean Michael C. Berris
C/C++ Software Architect
Orange and Bronze Software Labs
http://3w-agility.blogspot.com/
http://cplusplus-soup.blogspot.com/
Mobile: +639287291459
Email: dean [at] orangeandbronze [dot] com

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