| 62 | class ReferenceCountedString final : public ReferenceCounted { |
| 63 | public: |
| 64 | static std::pair<const ReferenceCount* absl_nonnull, absl::string_view> New( |
| 65 | absl::string_view string) { |
| 66 | const auto* const refcount = |
| 67 | ::new (internal::New(Overhead() + string.size())) |
| 68 | ReferenceCountedString(string); |
| 69 | return std::pair{static_cast<const ReferenceCount* absl_nonnull>(refcount), |
| 70 | absl::string_view(refcount->data_, refcount->size_)}; |
| 71 | } |
| 72 | |
| 73 | private: |
| 74 | // ReferenceCountedString is non-standard-layout due to having virtual functions |