Добавить операция конкатенация std::string и std::string_view (operator +)
Перенос предложения: голоса +18, -3 Автор идеи: khnormuradov
Не комплируется конкатенация string_view и std::string: string_view{} + string{} --> ERROR
#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,
// Но без них код выглядить более читабельно.
Magomed Kostoev 19 июля 2020, 17:05 Прям мысли прочли, как раз хотел прийти сюда с таким же предложением.
я ~~джва года~~ устал ждать эту несчастную перегрузку, блджад!
ещё есть вот такое:
http://wg21.link/p1228
но оно, видимо, протухло. хотя можно было бы и оживить.
я ~джва года~ устал ждать эту несчастную перегрузку, блджад!
Не ждите, напишите proposal, убедитесь что перегрузки не ломают старый код, где строка складывается с const char* или с типом с operator string()