[PATCH] D92480: [llvm] Unify interface of (ThreadSafe)?RefCountedBase
Duncan P. N. Exon Smith via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Dec 3 11:21:25 PST 2020
dexonsmith added inline comments.
================
Comment at: llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:75-76
RefCountedBase() = default;
+ // Copy and move constructors/assignments are no-ops as the RefCount isn't
+ // dictated by the class directly.
RefCountedBase(const RefCountedBase &) {}
----------------
njames93 wrote:
> njames93 wrote:
> > dexonsmith wrote:
> > > dblaikie wrote:
> > > > I can't quite understand this comment - perhaps you could try rephrasing it?
> > > I'm not quite following why you needed to add these special members; it seems like just the destructor would be enough for the assertion; but if you do need them, can/should they be `= default`?
> > They can't be defaulted as we don't want to copy the RefCount.
> I understand it in my head, just can't think of the best way to write it down.
Maybe something like this would work:
```
/// Do not copy or move RefCount when constructing or assigning from
/// a derived type. These operations don't imply anything about the
/// number of IntrusiveRefCntPtr instances.
```
WDYT?
================
Comment at: llvm/include/llvm/ADT/IntrusiveRefCntPtr.h:75-80
+ // Copy and move constructors/assignments are no-ops as the RefCount isn't
+ // dictated by the class directly.
RefCountedBase(const RefCountedBase &) {}
+ RefCountedBase(RefCountedBase &&) {}
+ RefCountedBase &operator=(const RefCountedBase &) { return *this; }
+ RefCountedBase &operator=(RefCountedBase &&) { return *this; }
----------------
dexonsmith wrote:
> njames93 wrote:
> > njames93 wrote:
> > > dexonsmith wrote:
> > > > dblaikie wrote:
> > > > > I can't quite understand this comment - perhaps you could try rephrasing it?
> > > > I'm not quite following why you needed to add these special members; it seems like just the destructor would be enough for the assertion; but if you do need them, can/should they be `= default`?
> > > They can't be defaulted as we don't want to copy the RefCount.
> > I understand it in my head, just can't think of the best way to write it down.
> Maybe something like this would work:
> ```
> /// Do not copy or move RefCount when constructing or assigning from
> /// a derived type. These operations don't imply anything about the
> /// number of IntrusiveRefCntPtr instances.
> ```
> WDYT?
Ah, I get it, thanks for explaining.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92480/new/
https://reviews.llvm.org/D92480
More information about the cfe-commits
mailing list