Utils: Introduce flexible constructor for SmallString and SmallStringView

If a class has a data method that returns a char pointer it can be 
used to construct a SmallString and a SmallStringView.

Change-Id: I02dcba50babb3074b58998e5f907799e84361ed7
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Marco Bubke
2018-01-17 11:49:06 +01:00
parent 05b86568d9
commit b3bed4c306
2 changed files with 24 additions and 6 deletions

View File

@@ -126,13 +126,17 @@ public:
: BasicSmallString(BasicSmallString::fromQString(qString))
{}
template<typename Type,
typename = std::enable_if_t<std::is_same<std::decay_t<Type>, std::string>::value>
>
BasicSmallString(Type &&string)
: BasicSmallString(string.data(), string.size())
BasicSmallString(const QByteArray &qByteArray)
: BasicSmallString(qByteArray.constData(), qByteArray.size())
{}
template<typename String,
typename Utils::enable_if_has_char_data_pointer<String> = 0>
BasicSmallString(const String &string)
: BasicSmallString(string.data(), string.size())
{
}
template<typename BeginIterator,
typename EndIterator,
typename = std::enable_if_t<std::is_same<BeginIterator, EndIterator>::value>