diff --git a/src/libs/utils/smallstring.h b/src/libs/utils/smallstring.h index 02c18a2c60d..9fd488b80e8 100644 --- a/src/libs/utils/smallstring.h +++ b/src/libs/utils/smallstring.h @@ -126,13 +126,17 @@ public: : BasicSmallString(BasicSmallString::fromQString(qString)) {} - template, std::string>::value> - > - BasicSmallString(Type &&string) - : BasicSmallString(string.data(), string.size()) + BasicSmallString(const QByteArray &qByteArray) + : BasicSmallString(qByteArray.constData(), qByteArray.size()) {} + template = 0> + BasicSmallString(const String &string) + : BasicSmallString(string.data(), string.size()) + { + } + template::value> diff --git a/src/libs/utils/smallstringview.h b/src/libs/utils/smallstringview.h index ce5e63292f1..4932a85cb4f 100644 --- a/src/libs/utils/smallstringview.h +++ b/src/libs/utils/smallstringview.h @@ -34,6 +34,18 @@ namespace Utils { +template +using enable_if_has_char_data_pointer = typename std::enable_if_t< + std::is_same< + std::remove_const_t< + std::remove_pointer_t< + std::result_of_t< + decltype(&String::data)(String) + > + > + >, char>::value + , int>; + class SmallStringView { public: @@ -67,7 +79,9 @@ public: { } - SmallStringView(const std::string &string) noexcept + template = 0> + SmallStringView(const String &string) noexcept : m_pointer(string.data()), m_size(string.size()) {