namespace std {
template <class charT, class traits, class Allocator>
constexpr basic_string<charT, traits, Allocator>
operator+(type_identity_t<basic_string_view<charT, traits>> lhs,
const basic_string<charT, traits, Allocator>& rhs); // (1) C++26
template <class charT, class traits, class Allocator>
constexpr basic_string<charT, traits, Allocator>
operator+(type_identity_t<basic_string_view<charT, traits>> lhs,
basic_string<charT, traits, Allocator>&& rhs); // (2) C++26
}
概要
basic_string_viewオブジェクトとbasic_stringオブジェクトを連結する。
- (1) :
basic_string_viewオブジェクトとbasic_stringオブジェクトを連結する - (2) :
basic_string_viewオブジェクトと右辺値のbasic_stringオブジェクトを連結する
basic_string_view側の引数にtype_identity_tを使用することで非推論コンテキストとし、basic_string_viewに暗黙変換可能な型からの連結を可能にしている。
戻り値
-
(1) : 以下と等価
basic_string<charT, traits, Allocator> r = rhs; r.insert(0, lhs); return r; -
(2) : 以下と等価
rhs.insert(0, lhs); return std::move(rhs);
例
#include <iostream>
#include <string>
#include <string_view>
int main()
{
std::string_view sv = "Hello, ";
std::string s = "World!";
// string_view + string (1)
std::string result1 = sv + s;
std::cout << result1 << '\n';
// string_view + string&& (2)
std::string result2 = sv + std::string("World!");
std::cout << result2 << '\n';
}
出力
Hello, World!
Hello, World!
バージョン
言語
- C++26
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??
関連項目
| 名前 | 説明 |
|---|---|
basic_string::operator+ |
文字列の連結 |