Move five = default special member functions out of line across Cord, SharedContext, and CallbackBase.

PiperOrigin-RevId: 1006400150
diff --git a/absl/strings/cord.cc b/absl/strings/cord.cc
index f9f576a..6ba64c5 100644
--- a/absl/strings/cord.cc
+++ b/absl/strings/cord.cc
@@ -1687,5 +1687,12 @@
   return sizeof(CordRepSubstring);
 }
 }  // namespace strings_internal
+
+Cord::Cord(const Cord&) = default;
+
+Cord& Cord::operator=(const Cord&) = default;
+
+Cord& Cord::operator=(Cord&&) = default;
+
 ABSL_NAMESPACE_END
 }  // namespace absl
diff --git a/absl/strings/cord.h b/absl/strings/cord.h
index 8fe8e9f..fb3b86e 100644
--- a/absl/strings/cord.h
+++ b/absl/strings/cord.h
@@ -192,10 +192,10 @@
   // movable. The moved-from state is valid but unspecified.
   // Moves need to be declared since they are otherwise inhibited via the
   // declaration of the destructor.
-  Cord(const Cord&) = default;
+  Cord(const Cord&);
   Cord(Cord&&) = default;
-  Cord& operator=(const Cord&) = default;
-  Cord& operator=(Cord&&) = default;
+  Cord& operator=(const Cord&);
+  Cord& operator=(Cord&&);
 
   // Creates a Cord from a `src` string. This constructor is marked explicit to
   // prevent implicit Cord constructions from arguments convertible to an