Fix comment about releaser's operators in MakeCordFromExternal. PiperOrigin-RevId: 871940822 Change-Id: I493f8e5e13de9b80f71b63d2ad8c96f649c0449f
diff --git a/absl/strings/cord.h b/absl/strings/cord.h index fa6eb8a..965361c 100644 --- a/absl/strings/cord.h +++ b/absl/strings/cord.h
@@ -222,7 +222,7 @@ // remain live until the releaser is invoked. The callable releaser also must: // // * be move constructible - // * support `void operator()(absl::string_view) const` or `void operator()` + // * support `void operator()(absl::string_view)` or `void operator()()` // // Example: //
diff --git a/absl/strings/cord_test.cc b/absl/strings/cord_test.cc index 55007bb..f6ade9e 100644 --- a/absl/strings/cord_test.cc +++ b/absl/strings/cord_test.cc
@@ -1766,6 +1766,34 @@ EXPECT_TRUE(invoked); } +TEST_P(CordTest, ConstructFromExternalNonConstReleaser) { + struct Releaser { + explicit Releaser(bool* invoked) : invoked(invoked) {} + // Non const method. + void operator()(absl::string_view) { *invoked = true; } + + bool* invoked; + }; + + bool invoked = false; + (void)MaybeHardened(absl::MakeCordFromExternal("dummy", Releaser(&invoked))); + EXPECT_TRUE(invoked); +} + +TEST_P(CordTest, ConstructFromExternalNonConstNoArgReleaser) { + struct Releaser { + explicit Releaser(bool* invoked) : invoked(invoked) {} + // Non const method. + void operator()() { *invoked = true; } + + bool* invoked; + }; + + bool invoked = false; + (void)MaybeHardened(absl::MakeCordFromExternal("dummy", Releaser(&invoked))); + EXPECT_TRUE(invoked); +} + TEST_P(CordTest, ConstructFromExternalNoArgLambda) { bool invoked = false; (void)MaybeHardened(