Jeremy,

Just to keep you informed: the code compiles well for the 0.1.7 tag on
both machines, but fails for both on the trunk.

> The prototype for ref_ptr::get looks like this:
>
>        T* get() const { return _ptr; }
>

After reviewing the 0.1.7 code, this makes perfect sense. It is legal
to get a non const reference from a const list of ref_ptr<>s.

But the trunk uses observer_ptr<> instead. And this observer_ptr<>
does *not* define the const method returning a non const pointer.

I really don't know why it is this way - I had actually never noticed
that ref_ptr<> had this "feature". It makes more sense to me how the
observer_ptr<> is implemented because ref_ptr and observer_ptr are
just proxies that should IMHO behave like ordinary references or
pointers when we call operator*() or operator->(). (I'm sure a C++
guru could slap me for what I've said, but I'd enjoy it if it came
with an explanation :)

> It's a const method that returns a non-const pointer. I've done a bit of
> research, and this does appear to be something some compilers catch and
> some don't, so I'm not sure how OSG builds for any of us if we really
> adhering to some strict checking.

OSG does compile well with VS 9.0 and my (weird?) GCC 4.1.2 ...

To be continued I guess.

Thibault
_______________________________________________
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

Reply via email to