}
+/*
+ *-----------------------------------------------------------------------------
+ *
+ * utf::string::string --
+ *
+ * Move constructor.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None
+ *
+ *-----------------------------------------------------------------------------
+ */
+
+string::string(string&& s) // IN/OUT
+ : mUstr(),
+ mUtf16Cache(nullptr),
+ mUtf16Length(npos)
+{
+ swap(s);
+}
+
+
/*
*-----------------------------------------------------------------------------
*
*
* utf::string::operator= --
*
- * Assignment operator.
+ * Unifying (copy and move) assignment operator.
*
* Results:
* A reference to this string.
/*********************************************************
- * Copyright (c) 2008-2024 Broadcom. All Rights Reserved.
+ * Copyright (c) 2008-2025 Broadcom. All Rights Reserved.
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
*
* This program is free software; you can redistribute it and/or modify it
inline void
ubstr_t::swap(ubstr_t& s) // IN/OUT
{
- std::swap(mBstr, s.mBstr);
+ // `_bstr_t` reference-counts its internal `BSTR`, so using `std::swap`
+ // should be cheap.
+ using std::swap;
+ swap(mBstr, s.mBstr);
mUTF8.swap(s.mUTF8);
}