Добавить операция конкатенация std::string и std::string_view (operator +)

khnormuradov
khnormuradov
#include <string>
#include <cstdio>
 

int main()
{
   std::string s = "hello ";
   std::string_view v = "world";
   std::string result = v+s; // ERROR: not found operator + overload
}

Поэтому предлагаю добавить два оверлоад

 


string operator + (const string_view sv, const string& s)
{
   string result;
   result.reserve(sv.size() + s.size());
   result.append(sv);
   result.append(s);
   return result;
}

string operator + (const string& s, const string_view sv )
{
    string result;
    result.reserve(s.size() + sv.size());
    result.append(s);
    result.append(sv);
    return result;
}

// и для  string && s    случай ещё две оверлоады.   
// Это только схема, в самом деле надо делать через шаблон  
// template <typaname CharT, typename Traits, typename Allocator> basic_string,
// Но без них код выглядить более читабельно.
8
рейтинг
Нет комментариев
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения