DescriptionRename and improve "traceable" templates.
The NeedsTracing<T>::value expression would previously return true
if T had a trace() method or T == Member<U>. It would not be
true if T == WeakMember<U>; something that was convenient when
using NeedsTracing<> in connection with hash table backing stores,
needing to determine whether to trace the elements of the table, but
not if they were weak references & delegate that to weak processing.
As NeedsTracing<T> has grown an increasing number of uses besides
the handling of backing store tracing, where exempting WeakMember<>
makes no great sense, it is time to alter its meaning to accommodate
those uses better. And at the same time rename it to follow the various
other predicate templates we provide over types. So,
NeedsTracing<T> => IsTraceable<T> (includes weak)
NeedsTracingLazily<T> => IsTraceableInCollection<T> (excludes weak)
NeedsTracingTrait<Trait> => IsTraceableInCollectionTrait<T>
Along with these changes, tidy up the static_assert() error messages in
a few places.
R=
BUG=
Committed: https://crrev.com/87a7aa55418719988c0267efcb83a6d83233ea2a
Cr-Commit-Position: refs/heads/master@{#399389}
Patch Set 1 #Patch Set 2 : fix HeapTest compilation #Patch Set 3 : address TraceTraits FIXME #Patch Set 4 : comment rewording #
Total comments: 2
Messages
Total messages: 14 (6 generated)
|