- string_view[meta header]
- std[meta namespace]
- function template[meta id-type]
- cpp26[meta cpp]
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
}- type_identity_t[link /reference/type_traits/type_identity.md]
- basic_string[link /reference/string/basic_string.md]
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;
- insert[link /reference/string/basic_string/insert.md]
-
(2) : 以下と等価
rhs.insert(0, lhs); return std::move(rhs);
- insert[link /reference/string/basic_string/insert.md]
#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';
}- +[color ff0000]
Hello, World!
Hello, World!
- C++26
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??
| 名前 | 説明 |
|---|---|
basic_string::operator+ |
文字列の連結 |