On 2013/12/04 08:07:47, jochen wrote:
we can't use std::unique_ptr because it's not available on mac os 10.6's
libstdc++
Using get() however is inline with the std::unique_ptr API so I think
this is
a
good change.
scoped_ptr doesn't depend on unique_ptr while provides similar interface
which
makes transition to unique_ptr very easy when the time comes. Taking that
into
account it may make sense to replace SmartPointer with scoped_ptr and
replace it
later with unique_ptr. Do you suggest we should skip this intermediate step
and
switch straight to unique_ptr when support for mac os 10.6 is deprecated?
https://codereview.chromium.org/101763003/diff/1/src/smart-pointers.h
File src/smart-pointers.h (right):
https://codereview.chromium.org/101763003/diff/1/src/smart-pointers.h#newcode54
src/smart-pointers.h:54: ~SmartPointerBase() { if (p_)
Deallocator::Delete(p_);
}
On 2013/12/04 07:44:48, alph wrote:
> On 2013/12/04 07:34:01, yurys wrote:
> > On 2013/12/03 16:17:55, svenpanne wrote:
> > > Hmmm, this has been like that before, but why is it safe to have a
> non-virtual
> > > destructor in a base class here? As it is, nothing prevents an
incorrect
> usage
> > > AFAICT...
> >
> > This is a good question. I believe the problem is that
SmartArrayPointer
and
> > SmartPointer inherit from SmartPointerBase. This could be solved e.g.
by
> making
> > SmartPointer a template with single parameter T. Then it may use
Deallocator
> as
> > type traits internally, Deallocator in turn can be specialized for
array
> types.
> > This way we could use SmartPointer for both array types and scalar
types.
>
> How about making the SmartPointerBase destructor protected?
> Actually nobody should have reference it via the base class.
>
> > It may make sense to replace current implementation of SmartPointer
with
one
> > from Blink or Chromium where all such problems have already been
solved.
WDYT?
>
Yes, making it protected makes sense. Since this is a template thing and
not a
virtual class hierarchy it should not be virtual.
Done.
https://codereview.chromium.org/101763003/
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.