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(