Simplify toStdWString

In C++17: just use std::basic_string::data().

In C++11: dereferencing begin() on an empty string is undefined
behavior on all compilers, not just MSVC, so remove
that workaround. Instead of the reference-dereference
combo, use std::basic_string::front().

Change-Id: I3229597e000311ce71e4083dca6667bb56d8f8e3
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Giuseppe D'Angelo 2019-02-10 18:43:46 +01:00
parent d41a46bc39
commit 40e4ab673a

View File

@ -1380,14 +1380,12 @@ inline std::wstring QString::toStdWString() const
{
std::wstring str;
str.resize(length());
#ifdef Q_CC_MSVC
// VS2005 crashes if the string is empty
if (!length())
return str;
#if __cplusplus >= 201703L
str.resize(toWCharArray(str.data()));
#else
if (length())
str.resize(toWCharArray(&str.front()));
#endif
str.resize(toWCharArray(&(*str.begin())));
return str;
}