diff --git a/src/util/AllocatedString.hxx b/src/util/AllocatedString.hxx index 9b2c5812a..19f17ee0e 100644 --- a/src/util/AllocatedString.hxx +++ b/src/util/AllocatedString.hxx @@ -100,6 +100,18 @@ public: return *this; } + BasicAllocatedString &operator=(string_view src) noexcept { + delete[] std::exchange(value, nullptr); + value = Duplicate(src); + return *this; + } + + BasicAllocatedString &operator=(const_pointer src) noexcept { + delete[] std::exchange(value, nullptr); + value = src != nullptr ? Duplicate(src) : nullptr; + return *this; + } + constexpr bool operator==(std::nullptr_t) const noexcept { return value == nullptr; } @@ -161,6 +173,8 @@ public: AllocatedString() noexcept = default; AllocatedString(BasicAllocatedString &&src) noexcept :BasicAllocatedString(std::move(src)) {} + + using BasicAllocatedString::operator=; }; #endif