Skip to content

Commit 2a481bb

Browse files
fowlesnetkex
authored andcommitted
Switch rank structs to be consistent with written guidance in go/ranked-overloads
PiperOrigin-RevId: 605125821 Change-Id: I2ee260eaf283acafd80abfd2b7419a0e9f597a78
1 parent 73b23b9 commit 2a481bb

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

absl/container/internal/common_policy_traits.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ struct common_policy_traits {
6464
// UNINITIALIZED
6565
template <class Alloc>
6666
static void transfer(Alloc* alloc, slot_type* new_slot, slot_type* old_slot) {
67-
transfer_impl(alloc, new_slot, old_slot, Rank0{});
67+
transfer_impl(alloc, new_slot, old_slot, Rank2{});
6868
}
6969

7070
// PRECONDITION: `slot` is INITIALIZED
@@ -83,7 +83,7 @@ struct common_policy_traits {
8383

8484
static constexpr bool transfer_uses_memcpy() {
8585
return std::is_same<decltype(transfer_impl<std::allocator<char>>(
86-
nullptr, nullptr, nullptr, Rank0{})),
86+
nullptr, nullptr, nullptr, Rank2{})),
8787
std::true_type>::value;
8888
}
8989

@@ -95,18 +95,19 @@ struct common_policy_traits {
9595
}
9696

9797
private:
98-
// To rank the overloads below for overload resolution. Rank0 is preferred.
99-
struct Rank2 {};
100-
struct Rank1 : Rank2 {};
101-
struct Rank0 : Rank1 {};
98+
// Use go/ranked-overloads for dispatching.
99+
struct Rank0 {};
100+
struct Rank1 : Rank0 {};
101+
struct Rank2 : Rank1 {};
102102

103103
// Use auto -> decltype as an enabler.
104104
// P::transfer returns std::true_type if transfer uses memcpy (e.g. in
105105
// node_slot_policy).
106106
template <class Alloc, class P = Policy>
107107
static auto transfer_impl(Alloc* alloc, slot_type* new_slot,
108-
slot_type* old_slot, Rank0)
109-
-> decltype(P::transfer(alloc, new_slot, old_slot)) {
108+
slot_type* old_slot,
109+
Rank2) -> decltype(P::transfer(alloc, new_slot,
110+
old_slot)) {
110111
return P::transfer(alloc, new_slot, old_slot);
111112
}
112113
#if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
@@ -129,7 +130,7 @@ struct common_policy_traits {
129130

130131
template <class Alloc>
131132
static void transfer_impl(Alloc* alloc, slot_type* new_slot,
132-
slot_type* old_slot, Rank2) {
133+
slot_type* old_slot, Rank0) {
133134
construct(alloc, new_slot, std::move(element(old_slot)));
134135
destroy(alloc, old_slot);
135136
}

absl/strings/cord.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1120,7 +1120,7 @@ Cord MakeCordFromExternal(absl::string_view data, Releaser&& releaser) {
11201120
} else {
11211121
using ReleaserType = absl::decay_t<Releaser>;
11221122
cord_internal::InvokeReleaser(
1123-
cord_internal::Rank0{}, ReleaserType(std::forward<Releaser>(releaser)),
1123+
cord_internal::Rank1{}, ReleaserType(std::forward<Releaser>(releaser)),
11241124
data);
11251125
}
11261126
return cord;

absl/strings/internal/cord_internal.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -352,18 +352,19 @@ struct CordRepExternal : public CordRep {
352352
static void Delete(CordRep* rep);
353353
};
354354

355-
struct Rank1 {};
356-
struct Rank0 : Rank1 {};
355+
// Use go/ranked-overloads for dispatching.
356+
struct Rank0 {};
357+
struct Rank1 : Rank0 {};
357358

358359
template <typename Releaser, typename = ::absl::base_internal::invoke_result_t<
359360
Releaser, absl::string_view>>
360-
void InvokeReleaser(Rank0, Releaser&& releaser, absl::string_view data) {
361+
void InvokeReleaser(Rank1, Releaser&& releaser, absl::string_view data) {
361362
::absl::base_internal::invoke(std::forward<Releaser>(releaser), data);
362363
}
363364

364365
template <typename Releaser,
365366
typename = ::absl::base_internal::invoke_result_t<Releaser>>
366-
void InvokeReleaser(Rank1, Releaser&& releaser, absl::string_view) {
367+
void InvokeReleaser(Rank0, Releaser&& releaser, absl::string_view) {
367368
::absl::base_internal::invoke(std::forward<Releaser>(releaser));
368369
}
369370

@@ -381,7 +382,7 @@ struct CordRepExternalImpl
381382
}
382383

383384
~CordRepExternalImpl() {
384-
InvokeReleaser(Rank0{}, std::move(this->template get<0>()),
385+
InvokeReleaser(Rank1{}, std::move(this->template get<0>()),
385386
absl::string_view(base, length));
386387
}
387388

0 commit comments

Comments
 (0)